EJB invocations from a remote client using JNDI
... For stateful beans, the JNDI name expects an additional "?stateful" to be appended after the fully qualified interface name part. This is because for stateful beans, a new session gets created on JNDI lookup and the EJB client API implementation doesn't contact the server during the JNDI lookup to know what kind of a bean the JNDI name represents (we'll come to this in a while). So the JNDI name itself is expected to indicate that the client is looking up a stateful bean, so that an appropriate session can be created.
... The client will have to place a jboss-ejb-client.properties file in the classpath of the application. The jboss-ejb-client.properties can contain the following properties:
... Here's an example of setting up multiple connections with different properties for each of those:
EJB invocations from a remote server instance
... As a first step on the "Client Server", we need to let the server know about the "Destination Server"'s EJB remoting connector, over which it can communicate during the EJB invocations. To do that, we'll have to add a "remote-outbound-connection" to the remoting subsystem on the "Client Server". The "remote-outbound-connection" configuration indicates that a outbound connection will be created to a remote server instance from that server. The "remote-outbound-connection" will be backed by a "outbound-socket-binding" which will point to a remote host and a remote port (of the "Destination Server").
new EJB client API, which is a JBoss specific API and allows invocation on remote EJBs
This client API isn't based on JNDI. So remote clients need not rely on JNDI API to invoke on EJBs.
... return
(RemoteCalculator) context.lookup(
"ejb:"
+ appName +
"/"
+ moduleName +
"/"
+ distinctName +
"/"
+ beanName +
"!"
+ viewClassName);
...
return
(RemoteCounter) context.lookup(
"ejb:"
+ appName +
"/"
+ moduleName +
"/"
+ distinctName +
"/"
+ beanName +
"!"
+ viewClassName +
"?stateful"
);
... For stateful beans, the JNDI name expects an additional "?stateful" to be appended after the fully qualified interface name part. This is because for stateful beans, a new session gets created on JNDI lookup and the EJB client API implementation doesn't contact the server during the JNDI lookup to know what kind of a bean the JNDI name represents (we'll come to this in a while). So the JNDI name itself is expected to indicate that the client is looking up a stateful bean, so that an appropriate session can be created.
... The client will have to place a jboss-ejb-client.properties file in the classpath of the application. The jboss-ejb-client.properties can contain the following properties:
endpoint.name=client-endpoint remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED= false remote.connections= default remote.connection. default .host= 10.20 . 30.40 remote.connection. default .port = 4447 remote.connection. default .connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS= false remote.connection. default .username=appuser remote.connection. default .password=apppassword |
... Here's an example of setting up multiple connections with different properties for each of those:
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=
false
remote.connections=one, two
remote.connection.one.host=localhost
remote.connection.one.port=
6999
remote.connection.one.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=
false
remote.connection.two.host=localhost
remote.connection.two.port=
7999
remote.connection.two.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=
false
As you can see we setup 2 connections "one" and "two" which both point to "localhost" as the "host" but different ports. Each of these connections will internally be used to create the EJB receivers in the EJB client context.
EJB invocations from a remote server instance
... As a first step on the "Client Server", we need to let the server know about the "Destination Server"'s EJB remoting connector, over which it can communicate during the EJB invocations. To do that, we'll have to add a "remote-outbound-connection" to the remoting subsystem on the "Client Server". The "remote-outbound-connection" configuration indicates that a outbound connection will be created to a remote server instance from that server. The "remote-outbound-connection" will be backed by a "outbound-socket-binding" which will point to a remote host and a remote port (of the "Destination Server").
new EJB client API, which is a JBoss specific API and allows invocation on remote EJBs
This client API isn't based on JNDI. So remote clients need not rely on JNDI API to invoke on EJBs.
Комментариев нет:
Отправить комментарий