嗨,这是我的场景,
我正在尝试将应用程序从 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]
我查看了几个带有相同错误消息的讨论,但我无法弄清楚我做错了什么。
在部署目录中,我只有一个 myapp.war。我不部署 .ear 文件。我有一个作为模块部署的依赖项(myapp-ejb.jar)。
我已按照“迁移 EAP”部分中https://docs.jboss.org/author/display/AS71/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7中的说明进行操作5 对 AS 7 进行远程调用的已部署应用程序"。
服务器在 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 只包含一个值:
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 接收器可用于处理错误。
有谁知道我错过了什么?有什么建议么?