Jboss IllegalStateException:没有可用于处理的EJB接收器

Jboss IllegalStateException:没有可用于处理的EJB接收器,jboss,ejb,ejb-3.0,jboss7.x,Jboss,Ejb,Ejb 3.0,Jboss7.x,我有一个客户端应用程序和一个使用JBossAS 7.1.1的服务器。在启动时,我的客户机与服务器的连接很好,并提供了一个远程接口供我使用。但是,当我尝试通过接口运行函数时,会出现以下异常: Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: No EJB receiver available for handling [appName:GrahamsProjServer,modulename:Graha

我有一个客户端应用程序和一个使用JBossAS 7.1.1的服务器。在启动时,我的客户机与服务器的连接很好,并提供了一个远程接口供我使用。但是,当我尝试通过接口运行函数时,会出现以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: 
No EJB receiver available for handling [appName:GrahamsProjServer,modulename:GrahamsProjServer,distinctname:] 
combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@3a42f352
        at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584)
        at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119)
        at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181)
        at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136)
        at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)
        at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)
        at $Proxy0.persistSchemas(Unknown Source)
        at grahamsprojclient.main.GrahamsProjScreen.btnPersistActionPerformed(Unknown Source)
        at grahamsprojclient.main.GrahamsProjScreen.access$400(Unknown Source)
        at grahamsprojclient.main.GrahamsProjScreen$5.actionPerformed(Unknown Source)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

服务器上没有出现错误。当我运行该函数时,它看起来甚至没有与服务器通信。怎么可能在启动时我的客户端连接到服务器很好,但当我尝试运行一个函数时它不会连接?

没有可用的EJB接收器消息本身并没有说明为什么它不会连接,所以这不会回答您的问题,但至少它可能会为您指明正确的方向

JBossEJB客户端库使用
Log4j
,因此它不会在
System.out
System.err
上打印。要真正了解发生了什么,您必须在
org.jboss.ejb.client
包上启用日志记录,例如,在
log4j.properties
中包含这一行:

log4j.logger.org.jboss.ejb.client=TRACE
启用此选项后,您可以更好地看到客户端为您所做的事情,并且很可能会打印底层错误

另外,从JBoss 7.1.0开始,
安全域
默认启用,因此要进行远程调用,必须执行以下操作之一:

  • 通过从
    standalone.xml
    文件中删除
    来禁用它

  • 使用
    bin/adduser(.bat)(.sh)
    脚本将用户添加到服务器。添加后,在
    jbossejb-client.properties
    文件中包含用户/pwd信息

您可以找到有关如何从远程客户端进行EJB调用的更详细的指南。

您可以在此处试用此技巧:

  • 转到Jboss根文件夹->独立部署
  • 选择正在运行的模块(.jar文件和.deployed文件并删除 他们
  • 然后转到服务器并从服务器上卸下模块,然后 住手
  • 然后再次添加项目并启动服务器
  • 然后检查您的Jboss根文件夹->独立\部署 并检查您部署的模块是否在那里可用 你成功了