Re: SOAP connect for WebSphere vs TomCat
On Apr 23, 5:23 pm, Bojan <srbi...@gmail.com> wrote:
On Apr 22, 9:57 am, lord.zol...@gmail.com wrote:
On Apr 22, 7:46 am, Donkey Hottie <s...@fred.pp.fi> wrote:
Bojan <srbi...@gmail.com> wrote innews:3cc892e3-7bb2-4577-8b71-388535=
ed25cf@u10g2000vbd.googlegroups.com:
Hi,
I am programing using RAD (Rational Application Developer) a versio=
n
of Eclipse which has built in WebSphere Server. When execute my
program it works properly. But when I export it as a war file an=
d run
it with Apache Tomcat server I get the following error:
Apparently You have created a Web Service client using WebSphere spec=
ific
tools and libraries.
You need to create the client with some all around solution, like Apa=
che
Axis in order to get it running in other containers than WebSphere.
Indeed...
Right off the bat, it looks like you're using the AdminClient classes
which if I recall correctly, are a part of the WebSphere runtime so
you'd have to have a jar with those classes accessible to your app
when it runs on a non-WebSphere environment... this is probably not a
great solution.
A more generic solution would probably replace AdminClient with
MBeanServerConnection and JMXConnector (which I think is in javax.* so
you shouldn't need any extra jars), for starters.
I have done what you have recommended but the problem is still there.
What I found interesting is that when i run it with the IBM's
environment no errors occur. But if I run the same code with the JRE
1.6 environment it fails.
The code:
String jndiPath="/jndi/JMXConnector";
String urlString = "service:jmx:iiop://=
localhost:9100" +jndiPath;
JMXServiceURL url = new JMXServiceURL(u=
rlString);
Hashtable<String, String> h = new Ha=
shtable<String, String>();
//Specify the user ID and password for th=
e server if security is
enabled on server.
h.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
h.put(Context.URL_PKG_PRE=
FIXES,"com.ibm.ws.naming");
//Establish the JMX connection.
try
{
JMXConnector jmxc = JMX=
ConnectorFactory.connect(url, h);
//Get the MBean server connection instanc=
e.
mbsc = jmxc.getMBeanSer=
verConnection();
}
catch(Exception e)
{
System.out.println("Error=
creating connection:");
e.printStackTrace();
}
}
my class name is JMXConnectorClient in the package jmx_test
the error is:
java.io.IOException: Failed to retrieve RMIServer stub:
javax.naming.NameNotFoundException: Context: 16DH7CAC83600B1Node01Cell/
nodes/16DH7CAC83600B1Node01/servers/server1, name: JMXConnector: First
component in name JMXConnector not found. [Root exception is
org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/
NamingContext/NotFound:1.0]
at javax.management.remote.rmi.RMIConnector.connect(Unkno=
wn Source)
at javax.management.remote.JMXConnectorFactory.connect(Un=
known
Source)
at jmx_test.JMXConnectorClient.connect(JMXConnectorClient=
..java:78)
at jmx_test.JMXConnectorClient.main(JMXConnectorClient.ja=
va:32)
Caused by: javax.naming.NameNotFoundException: Context:
16DH7CAC83600B1Node01Cell/nodes/16DH7CAC83600B1Node01/servers/server1,
name: JMXConnector: First component in name JMXConnector not found.
[Root exception is org.omg.CosNaming.NamingContextPackage.NotFound:
IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
at com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoun=
dException
(CNContextImpl.java:4730)
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup
(CNContextImpl.java:1907)
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup
(CNContextImpl.java:1862)
at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt
(CNContextImpl.java:1552)
at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNConte=
xtImpl.java:
1354)
at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.ja=
va:172)
at javax.naming.InitialContext.lookup(Unknown Source)
at javax.management.remote.rmi.RMIConnector.findRMIServer=
JNDI(Unknown
Source)
at javax.management.remote.rmi.RMIConnector.findRMIServer=
(Unknown
Source)
... 4 more
Caused by: org.omg.CosNaming.NamingContextPackage.NotFound:
IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.=
read(Unknown
Source)
at com.ibm.WsnOptimizedNaming._NamingContextStub.resolve_=
complete_info
(_NamingContextStub.java:504)
at com.ibm.ws.naming.jndicos.CNContextImpl.cosResolve
(CNContextImpl.java:4351)
at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup
(CNContextImpl.java:1901)
... 11 more
Any recommendations??
Thanks in advance
Hmm Your code looks very similar to an IBM example I've seen:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/co=
m.ibm.websphere.express.doc/info/exp/ae/tjmx_develop_jsr160.html
Only difference is that they set the PROVIDER_URL and your code
doesn't:
String providerUrl = "corbaloc:iiop:" + hostname + ":" + port + "/
WsnAdminNameService";
h.put(Context.PROVIDER_URL, providerUrl);
If would try setting this, unless there's a reason not to.