5

クライアントアプリケーションとJBossAS7.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)

サーバーにエラーは表示されません。関数を実行すると、サーバーと通信していないように見えます。起動時にクライアントがサーバーに正常に接続しているのに、関数を実行しようとすると接続されないのはどうしてですか?

4

2 に答える 2

5

メッセージ自体は、なぜ接続されないのNo EJB receiver availableかについてはあまり説明していないので、これはあなたの質問に答えることはできませんが、少なくともそれはあなたを正しい方向に向ける可能性があります。

JBoss EJBクライアントライブラリはを使用するLog4jため、印刷もされSystem.outませんSystem.err。何が起こっているのかを実際に知るには、パッケージへのログオンを有効にする必要があります。たとえば、次の行を:org.jboss.ejb.clientに含めます。log4j.properties

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

これを有効にすると、クライアントが何をしているかをよりよく確認でき、おそらく根本的なエラーを出力します。

また、JBoss 7.1.0では、security-realmがデフォルトで有効になっているため、リモート呼び出しを行うには、次のいずれかを実行する必要があります。

  • ファイル<security-realm/>からを削除して無効にしますstandalone.xml

また

  • bin/add-user(.bat)(.sh)スクリプトを使用して、サーバーにユーザーを追加します。追加したら、jboss-ejb-client.propertiesファイルにユーザー/pwd情報を含めます。

ここでは、リモートクライアントからEJB呼び出しを行う方法に関するより詳細なガイドを見つけることができます。

于 2012-09-16T17:07:42.240 に答える
0

ここでこのトリックを試すことができます:

  • Jbossルートフォルダー->standalone\deploymentsに移動します
  • 実行中のモジュール(.jarファイルと.deployedファイル)を選択して削除します
  • 次に、サーバーに移動し、サーバーからモジュールを削除して停止します。
  • 次に、プロジェクトを再度追加して、サーバーを起動します。
  • 次に、JBossルートフォルダー-> Standalone \ deploymentsに移動 し、デプロイされたモジュールがそこにあるかどうかを確認します。そこにある場合は成功です。
于 2018-07-11T03:56:17.207 に答える