Привет, это мой сценарий,
Я пытаюсь перенести приложение с 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), развернутая как модуль.
Я выполнил инструкции из https://docs.jboss.org/author/display/AS71/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7 в разделе «Миграция развернутых приложений EAP 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 я делаю удаленный вызов myapp-ejb.jar, используя приведенный выше статический метод getAccountRemote (). В каталог 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, доступный для обработки ошибки.
Кто-нибудь знает, что я пропустил? Какие-либо предложения?