未能创建远程处理连接[根异常为java.lang.RuntimeException:操作失败,状态为等待]
我创建了两个项目:服务器端和客户端。通过部署服务器端,我获得了成功,但无法从客户端连接到服务器端。这是我的密码: RemoteCalculator.java:未能创建远程处理连接[根异常为java.lang.RuntimeException:操作失败,状态为等待],java,ejb,jboss7.x,Java,Ejb,Jboss7.x,我创建了两个项目:服务器端和客户端。通过部署服务器端,我获得了成功,但无法从客户端连接到服务器端。这是我的密码: RemoteCalculator.java: package com.calculator; import javax.ejb.Remote; @Remote public interface RemoteCalculator { int add( int op1, int op2 ); } CalculatorBean.java: package com.calcul
package com.calculator;
import javax.ejb.Remote;
@Remote
public interface RemoteCalculator {
int add( int op1, int op2 );
}
CalculatorBean.java:
package com.calculator;
import javax.ejb.Stateless;
@Stateless
public class CalculatorBean implements RemoteCalculator {
@Override
public int add( int op1, int op2 ) {
return op1 + op2;
}
}
我和maven一起组装的。在这里,我向您展示了调用部分: EJB_Client.java:
public class EJBClient {
private static void invokeStatelessBean() throws NamingException {
RemoteCalculator statelessRemoteCalculator = lookupRemoteStatelessCalculator();
int sum = statelessRemoteCalculator.add( 3, 4 );
System.out.println( "sum = " + sum );
}
private static RemoteCalculator lookupRemoteStatelessCalculator() throws NamingException {
Security.addProvider( new JBossSaslProvider() );
final Hashtable<String, String> p = new Hashtable<String, String>();
p.put( Context.PROVIDER_URL, "remote://127.0.0.1:1099" );
p.put( Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming" );
p.put( Context.SECURITY_PRINCIPAL, "admin" );
p.put( Context.SECURITY_CREDENTIALS, "jboss" );
final Context context = new InitialContext( p );
return ( RemoteCalculator ) context
.lookup( "java:/ejb-remote-stateless-1.0-SNAPSHOT/CalculatorBean!com.calculator.RemoteCalculator" );
}
public static void main( String... args ) throws NamingException {
invokeStatelessBean();
}
}
公共类EJBClient{
私有静态void invokeStatelessBean()引发NamingException{
RemoteCalculator无状态RemoteCalculator=LookupRemoTestateTelesCalculator();
int sum=无状态远程计算器.add(3,4);
System.out.println(“sum=”+sum);
}
私有静态RemoteCalculator LookupRemoteTestAllesCalculator()引发NamingException{
addProvider(新的JBossSaslProvider());
最终哈希表p=新哈希表();
p、 put(Context.PROVIDER\u URL,“remote://127.0.0.1:1099" );
p、 put(Context.URL_PKG_前缀,“org.jboss.ejb.client.naming”);
p、 put(Context.SECURITY_PRINCIPAL,“admin”);
p、 put(Context.SECURITY_凭证,“jboss”);
最终上下文=新的初始上下文(p);
返回(远程计算器)上下文
.lookup(“java:/ejb-remote-stateless-1.0-SNAPSHOT/CalculatorBean!com.calculator.RemoteCalculator”);
}
公共静态void main(字符串…参数)引发NamingException{
调用TelessBean();
}
}
在运行main方法时,我得到以下日志:
Exception in thread "main" javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: Operation failed with status WAITING]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.init(InitialContext.java:242)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at Main.lookupRemoteStatelessCalculator(Main.java:31)
at Main.main(Main.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.RuntimeException: Operation failed with status WAITING
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:89)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
... 11 more
线程“main”javax.naming.NamingException中的异常:未能创建远程连接[根异常为java.lang.RuntimeException:操作失败,状态为等待]
位于org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
位于org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
位于javax.naming.InitialContext.init(InitialContext.java:242)
位于javax.naming.InitialContext。(InitialContext.java:216)
at Main.lookupRemoteStatelessCalculator(Main.java:31)
Main.Main(Main.java:46)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
原因:java.lang.RuntimeException:操作失败,状态为等待
位于org.jboss.naming.remote.protocol.iofutureheloper.get(iofutureheloper.java:89)
位于org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
位于org.jboss.naming.remote.client.InitialContextFactory.GetorCreateCachedNamegstore(InitialContextFactory.java:166)
位于org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
位于org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
... 还有11个
请告诉我,出了什么问题?我遇到了这个问题,解决这个问题的方法是将用户添加到“application roles.properties”文件中。我也遇到了这个问题。这似乎是jboss的一个bug,当这种情况发生时,您也无法连接到jboss_cli(端口关闭),jboss进程将挂起。重新启动(终止jboss进程)服务器会暂时起到帮助作用。