Взял пример https://docs.jboss.org/author/display/AS71/...ient+using+JNDIРедуцировал его до такого: Код | @Remote public interface TestRemote { int add(int a, int b); }
|
Код | @Stateless public class TestBL implements TestRemote { @Override public int add(int a, int b) { return a+b; } }
|
Собрал простейший jar и задеплоил. В логах всё хорошо Код | 17:08:28,628 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "JBoss7Test-0.SHAPSHOT.jar" 17:08:28,659 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named TestBL in deployment unit deployment "JBoss7Test-0.SHAPSHOT.jar" are as follows: java:global/JBoss7Test-0.SHAPSHOT/TestBL!ru.start2com.test.jboss7.beans.TestRemote java:app/JBoss7Test-0.SHAPSHOT/TestBL!ru.start2com.test.jboss7.beans.TestRemote java:module/TestBL!ru.start2com.test.jboss7.beans.TestRemote java:jboss/exported/JBoss7Test-0.SHAPSHOT/TestBL!ru.start2com.test.jboss7.beans.TestRemote java:global/JBoss7Test-0.SHAPSHOT/TestBL java:app/JBoss7Test-0.SHAPSHOT/TestBL java:module/TestBL 17:08:28,706 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "JBoss7Test-0.SHAPSHOT.jar"
|
Создал файл jboss-ejb-client.properties [code=nocolor] 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 endpoint.name=client-endpoint [/code=nocolor] и клиентский код Код | private static void invokeStatelessBean() throws NamingException { TestRemote statelessRemoteCalculator = lookupRemoteStatelessCalculator(); int sum = statelessRemoteCalculator.add(3, 4); System.out.println("sum = " + sum); }
private static TestRemote lookupRemoteStatelessCalculator() throws NamingException { Security.addProvider(new JBossSaslProvider()); final Hashtable<String, String> p = new Hashtable<String, String>(); p.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); p.put(Context.SECURITY_PRINCIPAL, "alxt"); p.put(Context.SECURITY_CREDENTIALS, "123"); final Context context = new InitialContext(p); return (TestRemote) context.lookup("ejb:app/JBoss7Test-0.SHAPSHOT/TestBL!ru.start2com.test.jboss7.beans.TestRemote"); }
|
При запуске на строке "int sum = statelessRemoteCalculator.add(3, 4);" ошибка Код | Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling [appName:app,modulename:JBoss7Test-0.SHAPSHOT,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@7ff5b6 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.add(Unknown Source) at ru.start2com.test.jboss7.client.TestRemoteClient.invokeStatelessBean(TestRemoteClient.java:23)
|
При этом на сервере: 17:09:29,677 ERROR [org.jboss.remoting.remote.connection] (Remoting "alxt" read-1) JBREM000200: Remote connection failed: java.io.IOException Пользователя добавил, пробовал без указания оного. jboss-ejb-client.properties точно подхватывается (если поменять, к примеру, в нём порт- то не соединится). Ткните, пожалуйста, где я ошибся. Или дайте рабочий пример (на сайте жбосса не нашёл- у всех pom.xml странный- у меня не компилируется).
|