こんにちは、これは私のシナリオです。
アプリケーションを JBoss5 から JBoss7 に移行しようとしています。
jboss-as-7.1.1.Final を使用しています。
私が得ているエラーは次のとおりです。
No EJB receiver available for handling [appName:,modulename:myapp-ejb,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@6b9bb4bb
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]
同じエラー メッセージでいくつかのディスカッションを見てきましたが、何が間違っているのかわかりません。
deployments ディレクトリには、myapp.war が 1 つだけあります。.ear ファイルはデプロイしません。モジュールとしてデプロイされた依存関係 (myapp-ejb.jar) があります。
https://docs.jboss.org/author/display/AS71/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7セクション「Migrate EAP」の指示に従いましたAS 7 へのリモート呼び出しを行う 5 つのデプロイ済みアプリケーション」.
サーバー myapp-ejb.jar には、次のような JNDI 名がたくさんあります。
public static final String ACCOUNT_REMOTE = "ejb:/myapp-ejb//AccountBean!com.company.myapp.ejb.account.AccountRemote";
ルックアップは、myapp-ejb.jar で定義されている次の静的メソッドを呼び出すことによって、クライアントから実行されます。
public static AccountRemote getAccountRemote() throws NamingException {
if (accountRemote == null){
InitialContext ic = new InitialContext();
Object ref = ic.lookup(JNDINames.ACCOUNT_REMOTE);
accountRemote = (AccountRemote) PortableRemoteObject.narrow(ref, AccountRemote.class);
}
return accountRemote;
}
すべてのリモート インターフェイスは、次のようなステートレス EJB 用です。
@Stateless
@Remote(AccountRemote.class)
public class AccountBean implements AccountRemote {
クライアント myapp.war から、上記の静的メソッド getAccountRemote() を使用して、myapp-ejb.jar へのリモート呼び出しを行います。myapp.war/WEB-INF ディレクトリに、jndi.properties と jboss-ejb-client.properties を追加しました。
jndi.properties には、値が 1 つだけ含まれています。
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming
jboss-ejb-client.properties には以下が含まれます。
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
Standalone.xml からリモート処理のセキュリティ レルムを削除しました。
<subsystem xmlns="urn:jboss:domain:remoting:1.1">
<connector name="remoting-connector" socket-binding="remoting" />
</subsystem>
JBOSS_HOME/bin/client/jboss-client.jar を myapp.war/WEB-INF/lib に追加しました。
アプリケーションはエラーなしで正常にデプロイされますが、localhost:8080/ を起動すると、No EJB receiver available for handling エラーが発生します。
誰かが私が逃したものを知っていますか? 助言がありますか?