未能创建远程处理连接[根异常为java.lang.RuntimeException:操作失败,状态为等待]

未能创建远程处理连接[根异常为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

我创建了两个项目:服务器端和客户端。通过部署服务器端,我获得了成功,但无法从客户端连接到服务器端。这是我的密码:

RemoteCalculator.java:

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进程)服务器会暂时起到帮助作用。