[Snowdrop] - Re: Remote EJB call (JBoss AS7/EAP6 )

Darryl Miles <[email protected]> Fri, 16 Aug 2013 21:19:01 -0400
Newsgroups gmane.comp.java.jboss.user
Message-ID <[email protected]>
------=_Part_1459518_1239735744.1376702341162
Content-Type: multipart/alternative; 
	boundary="----=_Part_1459517_1003348684.1376702341162"

------=_Part_1459517_1003348684.1376702341162
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Darryl Miles [https://community.jboss.org/people/dlmiles] created the discu=
ssion

"Re: Remote EJB call (JBoss AS7/EAP6 )"

To view the discussion, visit: https://community.jboss.org/message/832943#8=
32943

--------------------------------------------------------------
I can probably assist on this, as I have front end webservers (using plain =
Tomcat 7.x and Spring) connecting to a backend JBoss EAP 6.1 (that happens =
to also use Spring).=C2=A0 This is all using JBoss's enchanced EJB remoting=
.

I do not fully understand how I got it to work it was a lot of trial and er=
ror.

Some things I learned:

* Do not have a file called jndi.properties in your web-app.=C2=A0 This wil=
l interfere with Tomcat's own JNDI mechanism, such as for looking up JDBC c=
onnections.=C2=A0 That needs to continue to keep working, the problem is th=
at if you change the web-app environments config to use the alternative JND=
I registry and services.=C2=A0 Good if you are already running inside AS bu=
t not good for me, when I wanted Tomcat's regular and local JNDI to work, b=
ut have a few EJB remote beans to access another host on the network.

* Next I ensure I added dependencies for org.jboss.ejb.* into my WAR projec=
t (the client access code is an enchanced EJB remoting library that support=
s JBoss value added additional features, this is my understand anyway)
=C2=A0 I am a maven user so this means I added (you shall need to resolve t=
o the best versions to use for your particular version of JBoss AS / EAP / =
Wildfly:
[code]
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <depende=
ncy>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <groupId>org.jboss</groupId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <artifactId>jboss-ejb-client</artifactId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </depend=
ency>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <depende=
ncy>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <groupId>org.jboss</groupId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <artifactId>jboss-remote-naming</artifactId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </depend=
ency>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <depende=
ncy>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <groupId>org.jboss.marshalling</groupId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <artifactId>jboss-marshalling-river</artifactId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </depend=
ency>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <depende=
ncy>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <groupId>org.jboss.sasl</groupId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <artifactId>jboss-sasl</artifactId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </depend=
ency>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <depende=
ncy>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <groupId>org.jboss.xnio</groupId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <artifactId>xnio-nio</artifactId>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </depend=
ency>
[/code]

* When setting up the JndiTemplate I chose to stay away from a bean called =
"jndiTemplate" as I think this maybe a magic name used by default (if it ex=
ists) that also affected badly.=C2=A0 So I configured with:
[code]
=C2=A0=C2=A0=C2=A0 <bean id=3D"jbossJndiProperties" class=3D"org.springfram=
ework.beans.factory.config.PropertiesFactoryBean">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <property name=3D"location" valu=
e=3D"classpath:/my-jndi.properties"/>
=C2=A0=C2=A0=C2=A0 </bean>
[/code]

* The file /my-jndi.properties is a WAR toplevel level property file in the=
 classpath, this means it src/main/resources/my-jndi.properties (in the Mav=
en WAR project) or WEB-INF/classes/my-jndi.properties in the packaged WAR.
* In this file I have a single active line: java.naming.factory.url.pkgs=3D=
org.jboss.ejb.client.naming=C2=A0 (it is my limited understanding, this ove=
rrides the default client implementation to instead use the JBoss enchanced=
 EJB client not the JRE one, it is the JBoss enchancements that understand =
the configuration variable you are trying to set in the JNDI context enviro=
nment.)

* I chose to configure each use of a remote EJB with xmlns:jee=3D" http://w=
ww.springframework.org/schema/jee http://www.springframework.org/schema/jee=
" and xsi:schemaLocation=3D" http://www.springframework.org/schema/jee http=
://www.springframework.org/schema/jee  http://www.springframework.org/schem=
a/jee/spring-jee.xsd http://www.springframework.org/schema/jee/spring-jee.x=
sd",
* This means I used <jee:remote-slsb .../> modify this example to suit.=C2=
=A0 My EJB was inside an EAR all using Maven to manage the project.=C2=A0 T=
he jndi-name is the fully qualified one you shall find emitted by JBoss AS =
/ EAP / WildFly when it deploys the EJB with server logging enabled.
=C2=A0 The use of ${ejbReference.earVersion} is some matter concerning a di=
fference between testing and production environments in the as the item was=
 versioned.
[code]
<jee:remote-slsb id=3D"myStateless" jndi-name=3D"ejb:com.domain.ear${ejbRef=
erence.earVersion}/com-domain-ejb-0.0.1-SNAPSHOT/MyStatelessImpl!com.domain=
.ejb.MyStateless"
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 business-interface=3D"com.domain=
.ejb.MyStateless"
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 cache-home=3D"true" lookup-home-=
on-startup=3D"true" refresh-home-on-connect-failure=3D"true" environment-re=
f=3D"jbossJndiProperties">
=C2=A0=C2=A0=C2=A0 </jee:remote-slsb>
[/code]

* Now we configure the JBoss enchanced EJB client part in the WAR property =
file jboss-ejb-client.properties (this file is magically looked for by the =
JBoss code).
=C2=A0=C2=A0 Between devel (your local system), test (your testing platform=
) and live (the production environment) you tweat the 'remote.connections' =
and 'remote.clusters' lines,
=C2=A0=C2=A0 obviously you should ideally remove all unused/unrequired cred=
entials from the file that are not relevant to the environment in which you=
 deploy the config.
=C2=A0 My understanding is that port 4447 is the enchanced JBoss EJB remoti=
ng socket (which is not the standard port number for EJB)
=C2=A0 In this file the specialized properties you are trying to configure =
can be setup (only JBoss enchanced EJB client codes look at this) :
[code]
#
#=C2=A0=C2=A0 Not sure which things in this file are actually used.
##
endpoint.name=3Dclient-endpoint
#endpoint.create.options=3D

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=3Dfal=
se

#remote.connections=3Ddevel
remote.connections=3Dtest
#remote.connections=3Dlive

remote.connection.devel.host=3D127.0.0.1
remote.connection.devel.port=3D4447
remote.connection.devel.username=3Dmyusername
remote.connection.devel.password=3DmyPaSsWoRD123456

remote.connection.test.host=3D10.123.52.87
remote.connection.test.port=3D4447
remote.connection.test.username=3Dmyusername
remote.connection.test.password=3DmyPaSsWoRD123456
remote.connection.test.connect.options.org.xnio.Options.SASL_POLICY_NOANONY=
MOUS=3Dtrue
remote.connection.test.connect.options.org.xnio.Options.SASL_DISALLOWED_MEC=
HANISMS=3DJBOSS-LOCAL-USER

remote.connection.live.host=3D10.212.70.125
remote.connection.live.port=3D4447
remote.connection.live.username=3Dmyusername
remote.connection.live.password=3DmyPaSsWoRD123456
remote.connection.live.connect.options.org.xnio.Options.SASL_POLICY_NOANONY=
MOUS=3Dtrue
remote.connection.live.connect.options.org.xnio.Options.SASL_DISALLOWED_MEC=
HANISMS=3DJBOSS-LOCAL-USER

remote.clusters=3Dejb

remote.cluster.ejb.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=
=3Dtrue
remote.cluster.ejb.username=3Dmyusername
remote.cluster.ejb.password=3DmyPaSsWoRD123456

#remote.connection.default.host=3Dlocalhost
#remote.connection.default.port =3D 4447
#remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOA=
NONYMOUS=3Dfalse

jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOU=
S=3Dtrue
jboss.naming.client.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHAN=
ISMS=3DJBOSS-LOCAL-USER
jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEX=
T=3Dfalse

#jboss.naming.client.connect.options=3D
[/code]


* On the JBoss EJB server (AS/EAP/WildFly) you need to create the account t=
hat is used with username/password credentials as above.
=C2=A0 This looks to have resulted in the file standalone/configuration/app=
lication-users.properties gaining an entry for the username/password-hashed=
.
=C2=A0 Maybe the JBoss EJB / server configuration documentation is helpful =
on this point.=C2=A0 Running the script $JBOSS_HOME/bin/add-user.* in the c=
ontext of a non-admin application user.

* You need to ensure you have an appropiate profile for EJB and the subsyst=
em enabled in the server configuration such as standalone/configuration/sta=
ndalone-full.xml
=C2=A0 I did experiment with the <management> and <security-realms> part of=
 the config but it seems this was not needed in the final version that work=
ed for me.



I would appreciate any indepth knowledge correcting any of my above claims.=
=C2=A0 As I reiterate my configuration works by chance not by engineering, =
while there is documentation around the process of understanding what happe=
ns (the sequence of events) when an EJB client is library invokes on the se=
rver was better understood with the debugging and stepping into code!=C2=A0=
 This is not good.

Also documentation on what all the defaults are,
How to turn on full debugging mode (hint make this easy!) so all configured=
 options are dumped (as both client and server ends) during a remoting diag=
nostic session, if its possible to simplfy the steps by understanding the d=
efaults better.

If would also be very good if there was a single Maven dependency maybe typ=
e=3Dpom that was the collection of JARs needed for various JBoss EJB client=
 profiles starting with 'all features with all the trimmings' down to 'basi=
c remote EJB with SSL'.=C2=A0 So save me having to track down what is compa=
tible with that over multiple JARs needed on a foreign (non JBoss product) =
the client.
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/832943#832943]

Start a new discussion in Snowdrop at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=3D1&co=
ntainerType=3D14&container=3D2082]


------=_Part_1459517_1003348684.1376702341162
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link=3D"#355491" alink=3D"#4262a1" vlink=3D"#355491" style=3D"backgro=
und: #e2e2e2; margin: 0; padding: 20px;">

<div>
=09<table cellpadding=3D"0" bgcolor=3D"#FFFFFF" border=3D"0" cellspacing=3D=
"0" style=3D"border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -=
moz-border-radius: 6px; -webkit-border-radius: 6px;">
=09=09<tbody>
=09=09=09<tr>

=09=09=09=09<td>

=09=09=09=09=09<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" bgco=
lor=3D"#FFFFFF" style=3D"border: solid 2px #ccc; background: #dadada; width=
: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
=09=09=09=09=09=09<tbody>
=09=09=09=09=09=09=09<tr>
=09=09=09=09=09=09=09=09<td bgcolor=3D"#000000" valign=3D"middle" height=3D=
"58px" style=3D"border-bottom: 1px solid #ccc; padding: 20px; -moz-border-r=
adius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-ri=
ght-radius: 5px; -webkit-border-top-left-radius: 5px;">
=09=09=09=09=09=09=09=09=09<h1 style=3D"color: #333333; font: bold 22px Ari=
al, Helvetica, sans-serif; margin: 0; display: block !important;">
=09=09=09=09=09=09=09=09=09<!-- To have a header image/logo replace the nam=
e below with your img tag -->
=09=09=09=09=09=09=09=09=09<!-- Email clients will render the images when t=
he message is read so any image -->
=09=09=09=09=09=09=09=09=09<!-- must be made available on a public server, =
so that all recipients can load the image. -->
=09=09=09=09=09=09=09=09=09<a href=3D"https://community.jboss.org/index.jsp=
a" style=3D"text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
=09=09=09=09=09=09=09=09</td>

=09=09=09=09=09=09=09</tr>
=09=09=09=09=09=09=09<tr>
=09=09=09=09=09=09=09=09<td bgcolor=3D"#FFFFFF" style=3D"font: normal 12px =
Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-ra=
dius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-b=
ottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style=
=3D"margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Re: Remote EJB call (JBoss AS7/EAP6 )
</h3>
<span style=3D"margin-bottom: 10px;">
    created by <a href=3D"https://community.jboss.org/people/dlmiles">Darry=
l Miles</a> in <i>Snowdrop</i> - <a href=3D"https://community.jboss.org/mes=
sage/832943#832943">View the full discussion</a>
</span>
<hr style=3D"margin: 20px 0; border: none; background-color: #dadada; heigh=
t: 1px;">

<div class=3D"jive-rendered-content"><p>I can probably assist on this, as I=
 have front end webservers (using plain Tomcat 7.x and Spring) connecting t=
o a backend JBoss EAP 6.1 (that happens to also use Spring).&#160; This is =
all using JBoss's enchanced EJB remoting.</p><p style=3D"min-height: 8pt; h=
eight: 8pt; padding: 0px;">&#160;</p><p>I do not fully understand how I got=
 it to work it was a lot of trial and error.</p><p style=3D"min-height: 8pt=
; height: 8pt; padding: 0px;">&#160;</p><p>Some things I learned:</p><p sty=
le=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>* Do not ha=
ve a file called jndi.properties in your web-app.&#160; This will interfere=
 with Tomcat's own JNDI mechanism, such as for looking up JDBC connections.=
&#160; That needs to continue to keep working, the problem is that if you c=
hange the web-app environments config to use the alternative JNDI registry =
and services.&#160; Good if you are already running inside AS but not good =
for me, when I wanted Tomcat's regular and local JNDI to work, but have a f=
ew EJB remote beans to access another host on the network.</p><p style=3D"m=
in-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>* Next I ensure I =
added dependencies for org.jboss.ejb.* into my WAR project (the client acce=
ss code is an enchanced EJB remoting library that supports JBoss value adde=
d additional features, this is my understand anyway)</p><p>&#160; I am a ma=
ven user so this means I added (you shall need to resolve to the best versi=
ons to use for your particular version of JBoss AS / EAP / Wildfly:</p><p>[=
code]</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1=
60; &lt;dependency&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;groupId&gt;org.jboss&lt;/g=
roupId&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160;&#160;&#160; &lt;artifactId&gt;jboss-ejb-client&lt;/art=
ifactId&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1=
60;&#160; &lt;/dependency&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#1=
60;&#160;&#160;&#160;&#160; &lt;dependency&gt;</p><p>&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;gr=
oupId&gt;org.jboss&lt;/groupId&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;artifactId&gt;=
jboss-remote-naming&lt;/artifactId&gt;</p><p>&#160;&#160;&#160;&#160;&#160;=
&#160;&#160;&#160;&#160;&#160;&#160; &lt;/dependency&gt;</p><p>&#160;&#160;=
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;dependency&gt;</=
p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160; &lt;groupId&gt;org.jboss.marshalling&lt;/groupId&gt;</=
p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160; &lt;artifactId&gt;jboss-marshalling-river&lt;/artifact=
Id&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#=
160; &lt;/dependency&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#=
160;&#160;&#160;&#160; &lt;dependency&gt;</p><p>&#160;&#160;&#160;&#160;&#1=
60;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;groupId=
&gt;org.jboss.sasl&lt;/groupId&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#16=
0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;artifactId&gt;=
jboss-sasl&lt;/artifactId&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#1=
60;&#160;&#160;&#160;&#160; &lt;/dependency&gt;</p><p>&#160;&#160;&#160;&#1=
60;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;dependency&gt;</p><p>&#16=
0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&=
#160;&#160; &lt;groupId&gt;org.jboss.xnio&lt;/groupId&gt;</p><p>&#160;&#160=
;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#=
160; &lt;artifactId&gt;xnio-nio&lt;/artifactId&gt;</p><p>&#160;&#160;&#160;=
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/dependency&gt;</p><p>=
[/code]</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;<=
/p><p>* When setting up the JndiTemplate I chose to stay away from a bean c=
alled "jndiTemplate" as I think this maybe a magic name used by default (if=
 it exists) that also affected badly.&#160; So I configured with:</p><p>[co=
de]</p><p>&#160;&#160;&#160; &lt;bean id=3D"jbossJndiProperties" class=3D"o=
rg.springframework.beans.factory.config.PropertiesFactoryBean"&gt;</p><p>&#=
160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name=3D"location" val=
ue=3D"classpath:/my-jndi.properties"/&gt;</p><p>&#160;&#160;&#160; &lt;/bea=
n&gt;</p><p>[/code]</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0=
px;">&#160;</p><p>* The file /my-jndi.properties is a WAR toplevel level pr=
operty file in the classpath, this means it src/main/resources/my-jndi.prop=
erties (in the Maven WAR project) or WEB-INF/classes/my-jndi.properties in =
the packaged WAR.</p><p>* In this file I have a single active line: java.na=
ming.factory.url.pkgs=3Dorg.jboss.ejb.client.naming&#160; (it is my limited=
 understanding, this overrides the default client implementation to instead=
 use the JBoss enchanced EJB client not the JRE one, it is the JBoss enchan=
cements that understand the configuration variable you are trying to set in=
 the JNDI context environment.)</p><p style=3D"min-height: 8pt; height: 8pt=
; padding: 0px;">&#160;</p><p><span>* I chose to configure each use of a re=
mote EJB with xmlns:jee=3D"</span><a class=3D"jive-link-external-small" hre=
f=3D"http://www.springframework.org/schema/jee" rel=3D"nofollow" target=3D"=
_blank">http://www.springframework.org/schema/jee</a><span>" and xsi:schema=
Location=3D"</span><a class=3D"jive-link-external-small" href=3D"http://www=
.springframework.org/schema/jee" rel=3D"nofollow" target=3D"_blank">http://=
www.springframework.org/schema/jee</a><span> </span><a class=3D"jive-link-e=
xternal-small" href=3D"http://www.springframework.org/schema/jee/spring-jee=
.xsd" rel=3D"nofollow" target=3D"_blank">http://www.springframework.org/sch=
ema/jee/spring-jee.xsd</a><span>",</span></p><p>* This means I used &lt;jee=
:remote-slsb .../&gt; modify this example to suit.&#160; My EJB was inside =
an EAR all using Maven to manage the project.&#160; The jndi-name is the fu=
lly qualified one you shall find emitted by JBoss AS / EAP / WildFly when i=
t deploys the EJB with server logging enabled.</p><p>&#160; The use of ${ej=
bReference.earVersion} is some matter concerning a difference between testi=
ng and production environments in the as the item was versioned.</p><p>[cod=
e]</p><p>&lt;jee:remote-slsb id=3D"myStateless" jndi-name=3D"ejb:com.domain=
.ear${ejbReference.earVersion}/com-domain-ejb-0.0.1-SNAPSHOT/MyStatelessImp=
l!com.domain.ejb.MyStateless"</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#1=
60; business-interface=3D"com.domain.ejb.MyStateless"</p><p>&#160;&#160;&#1=
60;&#160;&#160;&#160;&#160; cache-home=3D"true" lookup-home-on-startup=3D"t=
rue" refresh-home-on-connect-failure=3D"true" environment-ref=3D"jbossJndiP=
roperties"&gt;</p><p>&#160;&#160;&#160; &lt;/jee:remote-slsb&gt;</p><p>[/co=
de]</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><=
p>* Now we configure the JBoss enchanced EJB client part in the WAR propert=
y file jboss-ejb-client.properties (this file is magically looked for by th=
e JBoss code).</p><p>&#160;&#160; Between devel (your local system), test (=
your testing platform) and live (the production environment) you tweat the =
'remote.connections' and 'remote.clusters' lines,</p><p>&#160;&#160; obviou=
sly you should ideally remove all unused/unrequired credentials from the fi=
le that are not relevant to the environment in which you deploy the config.=
</p><p>&#160; My understanding is that port 4447 is the enchanced JBoss EJB=
 remoting socket (which is not the standard port number for EJB)</p><p>&#16=
0; In this file the specialized properties you are trying to configure can =
be setup (only JBoss enchanced EJB client codes look at this) :</p><p>[code=
]</p><p>#</p><p>#&#160;&#160; Not sure which things in this file are actual=
ly used.</p><p>##</p><p>endpoint.name=3Dclient-endpoint</p><p>#endpoint.cre=
ate.options=3D</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">=
&#160;</p><p>remote.connectionprovider.create.options.org.xnio.Options.SSL_=
ENABLED=3Dfalse</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;"=
>&#160;</p><p>#remote.connections=3Ddevel</p><p>remote.connections=3Dtest</=
p><p>#remote.connections=3Dlive</p><p style=3D"min-height: 8pt; height: 8pt=
; padding: 0px;">&#160;</p><p>remote.connection.devel.host=3D127.0.0.1</p><=
p>remote.connection.devel.port=3D4447</p><p>remote.connection.devel.usernam=
e=3Dmyusername</p><p>remote.connection.devel.password=3DmyPaSsWoRD123456</p=
><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>remo=
te.connection.test.host=3D10.123.52.87</p><p>remote.connection.test.port=3D=
4447</p><p>remote.connection.test.username=3Dmyusername</p><p>remote.connec=
tion.test.password=3DmyPaSsWoRD123456</p><p>remote.connection.test.connect.=
options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=3Dtrue</p><p>remote.connec=
tion.test.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=3DJBO=
SS-LOCAL-USER</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&=
#160;</p><p>remote.connection.live.host=3D10.212.70.125</p><p>remote.connec=
tion.live.port=3D4447</p><p>remote.connection.live.username=3Dmyusername</p=
><p>remote.connection.live.password=3DmyPaSsWoRD123456</p><p>remote.connect=
ion.live.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=3Dtrue</p=
><p>remote.connection.live.connect.options.org.xnio.Options.SASL_DISALLOWED=
_MECHANISMS=3DJBOSS-LOCAL-USER</p><p style=3D"min-height: 8pt; height: 8pt;=
 padding: 0px;">&#160;</p><p>remote.clusters=3Dejb</p><p style=3D"min-heigh=
t: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>remote.cluster.ejb.connect=
.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=3Dtrue</p><p>remote.clust=
er.ejb.username=3Dmyusername</p><p>remote.cluster.ejb.password=3DmyPaSsWoRD=
123456</p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</=
p><p>#remote.connection.default.host=3Dlocalhost</p><p>#remote.connection.d=
efault.port =3D 4447</p><p>#remote.connection.default.connect.options.org.x=
nio.Options.SASL_POLICY_NOANONYMOUS=3Dfalse</p><p style=3D"min-height: 8pt;=
 height: 8pt; padding: 0px;">&#160;</p><p>jboss.naming.client.connect.optio=
ns.org.xnio.Options.SASL_POLICY_NOANONYMOUS=3Dtrue</p><p>jboss.naming.clien=
t.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=3DJBOSS-LOCAL=
-USER</p><p>jboss.naming.client.connect.options.org.xnio.Options.SASL_POLIC=
Y_NOPLAINTEXT=3Dfalse</p><p style=3D"min-height: 8pt; height: 8pt; padding:=
 0px;">&#160;</p><p>#jboss.naming.client.connect.options=3D</p><p>[/code]</=
p><p style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p sty=
le=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>* On the JB=
oss EJB server (AS/EAP/WildFly) you need to create the account that is used=
 with username/password credentials as above.</p><p>&#160; This looks to ha=
ve resulted in the file standalone/configuration/application-users.properti=
es gaining an entry for the username/password-hashed.</p><p>&#160; Maybe th=
e JBoss EJB / server configuration documentation is helpful on this point.&=
#160; Running the script $JBOSS_HOME/bin/add-user.* in the context of a non=
-admin application user.</p><p style=3D"min-height: 8pt; height: 8pt; paddi=
ng: 0px;">&#160;</p><p>* You need to ensure you have an appropiate profile =
for EJB and the subsystem enabled in the server configuration such as stand=
alone/configuration/standalone-full.xml</p><p>&#160; I did experiment with =
the &lt;management&gt; and &lt;security-realms&gt; part of the config but i=
t seems this was not needed in the final version that worked for me.</p><p =
style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style=3D=
"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style=3D"min-hei=
ght: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I would appreciate any i=
ndepth knowledge correcting any of my above claims.&#160; As I reiterate my=
 configuration works by chance not by engineering, while there is documenta=
tion around the process of understanding what happens (the sequence of even=
ts) when an EJB client is library invokes on the server was better understo=
od with the debugging and stepping into code!&#160; This is not good.</p><p=
 style=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Also do=
cumentation on what all the defaults are,</p><p>How to turn on full debuggi=
ng mode (hint make this easy!) so all configured options are dumped (as bot=
h client and server ends) during a remoting diagnostic session, if its poss=
ible to simplfy the steps by understanding the defaults better.</p><p style=
=3D"min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If would also=
 be very good if there was a single Maven dependency maybe type=3Dpom that =
was the collection of JARs needed for various JBoss EJB client profiles sta=
rting with 'all features with all the trimmings' down to 'basic remote EJB =
with SSL'.&#160; So save me having to track down what is compatible with th=
at over multiple JARs needed on a foreign (non JBoss product) the client.</=
p></div>

<div style=3D"background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style=3D"margin: 0;">Reply to this message by <a href=3D"https://com=
munity.jboss.org/message/832943#832943">going to Community</a></p>
=09<p style=3D"margin: 0;">Start a new discussion in Snowdrop at <a href=3D=
"https://community.jboss.org/choose-container!input.jspa?contentType=3D1&co=
ntainerType=3D14&container=3D2082">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>
------=_Part_1459517_1003348684.1376702341162--

------=_Part_1459518_1239735744.1376702341162
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user
------=_Part_1459518_1239735744.1376702341162--