2012-09-14 70 views
5

我有一個客戶端應用程序和一個使用JBoss AS 7.1.1的服務器。在啓動時,我的客戶端連接到服務器就好了,並給了我一個遠程接口來使用。但是,當我嘗試通過接口運行某個功能時,出現以下異常:IllegalStateException:沒有可用於處理的EJB接收器

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: 
No EJB receiver available for handling [appName:GrahamsProjServer,modulename:GrahamsProjServer,distinctname:] 
combination for invocation context [email protected] 
     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) 

服務器上未出現錯誤。當我運行該功能時,它看起來好像還沒有與服務器通話。怎麼會這樣呢,啓動時我的客戶端連接到服務器就好了,但是當我嘗試運行一個函數時它不會連接?

回答

5

No EJB receiver available消息本身並沒有說明爲什麼它不會連接,所以這不會回答你的問題,但至少它可能會指出你在正確的方向。

JBoss EJB客戶端庫使用Log4j,因此它不會在System.outSystem.err上打印。要真正知道發生了什麼,您必須啓用org.jboss.ejb.client包的日誌記錄,例如,方式包括在您log4j.properties這一行:

log4j.logger.org.jboss.ejb.client=TRACE 

啓用此功能,你可以更清楚地看到哪些客戶爲你做的,將最有可能打印的基本錯誤。

此外,對JBoss 7.1.0中,security-realm自帶默認啓用的,所以要進行遠程調用一個必須執行下列操作之一:

  • standalone.xml文件
  • 去除 <security-realm/>禁用它

OR

  • 使用bin/add-user(.bat)(.sh)腳本將用戶添加到服務器。一旦添加,請在您的jboss-ejb-client.properties文件中包含用戶/密碼信息。

Here有關如何從遠程客戶端進行EJB調用,您可以找到更詳細的指南。

+0

是的這是我的正確答案。 –

相關問題