-
1. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
jaikiran May 8, 2008 2:41 AM (in response to thomas2008ch)You will have to place the jbossall-client.jar file (which you can find in %JBOSS_HOME%\client folder) in the classpath of the client.
-
2. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 3:17 AM (in response to thomas2008ch)Thanks for the info. I can go astep further. But now I get another exception as follow, seems it is a problem of compatability:
Caused by: java.io.InvalidClassException: org.jboss.ejb3.LocalProxy; local class incompatible: stream classdesc serialVersionUID = -6521545933800264895, local class serialVersionUID = -7089389644057030711
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:654)
... 3 more -
3. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
jaikiran May 8, 2008 3:20 AM (in response to thomas2008ch)Are you sure you copied the correct version of the jar file? The jbossall-client.jar file should be the same as the one on the server. And do you have any other JBoss jar files in the client classpath?
-
4. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 3:25 AM (in response to thomas2008ch)The exception of compatabability obve is resolved.
Client
Now I got another exception:
Exception in thread "main" javax.ejb.EJBException: Invalid invocation of local interface (null container)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:77)
at $Proxy0.test(Unknown Source)
at com.wei.chen.TestClient.main(TestClient.java:27)
And here is my code of "TestClient.java":
...
Context context;
try {
context = new InitialContext();
MyBeanLocal beanLocal = (MyBeanLocal) context.lookup(TestMyBean.LocalJNDIName);
beanLocal.test("Wei Chen");
} catch (NamingException e) {
e.printStackTrace();
}
... -
5. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 3:29 AM (in response to thomas2008ch)Here is all my codes:
MyBeanLocal.java
****************
@Local
public interface MyBeanLocal {
public String test(String text);
}
TestMyBean.java
***************
@Stateless
public class TestMyBean implements MyBeanLocal {
public static final String LocalJNDIName = TestMyBean.class.getSimpleName() + "/local";
public String test(String text) {
return "Hello, " + text;
}
}
TestClient.java
*************
public class TestClient {
public static void main(String[] args) {
Context context;
try {
context = new InitialContext();
MyBeanLocal beanLocal = (MyBeanLocal) context
.lookup(TestMyBean.LocalJNDIName);
beanLocal.test("Wei Chen");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
jndi.properties
*************
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099 -
6. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
jaikiran May 8, 2008 3:32 AM (in response to thomas2008ch)You cannot use an Local interface from a remote client (the standalone java client, running in its own JVM). You will require a remote interface for the bean. Use an interface with @Remote.
-
7. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 4:00 AM (in response to thomas2008ch)"jaikiran" wrote:
You cannot use an Local interface from a remote client (the standalone java client, running in its own JVM). You will require a remote interface for the bean. Use an interface with @Remote.
You are right. Now I change the Local to remote as follow:
MyBeanLocal.java
****************
@Remote
public interface MyBeanLocal {
public String test(String text);
}
TestMyBean.java
***************
@Stateless
public class TestMyBean implements MyBeanLocal {
public static final String LocalJNDIName = TestMyBean.class.getSimpleName() + "/remote";
public String test(String text) {
return "Hello, " + text;
}
But I get a new exception as follow:
Caused by: javax.naming.NameNotFoundException: remote not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
at org.jnp.server.NamingServer.lookup(NamingServer.java:270)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:589)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.wei.chen.TestClient.main(TestClient.java:26) -
8. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
jaikiran May 8, 2008 4:12 AM (in response to thomas2008ch)You probably are not using the correct jndi-name while doing the lookup in the client. Use the JNDIView http://wiki.jboss.org/wiki/DisplayTheJNDITreeWithTheJMXConsole to list the contents of the jndi-tree and see what's the jndi-name for your bean.
Alternately, you can annotate the bean to use a jndi-name of your choice and use that jndi-name in your client lookup.@Stateless @RemoteBinding(jndiBinding = "MyJNDIName") public class TestMyBean implements MyBeanLocal {
Client code:MyBeanLocal bean = (MyBeanLocal) ctx.lookup("MyJNDIName");
-
9. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 4:39 AM (in response to thomas2008ch)Here is the list. Where can I find the correct jndi-name?
Besides, I try your alternativ but I get Exception of "MyJNDIName not bound".
Global JNDI Namespace
+- TopicConnectionFactory (class: org.jboss.naming.LinkRefPair)
+- jmx (class: org.jnp.interfaces.NamingContext)
| +- invoker (class: org.jnp.interfaces.NamingContext)
| | +- RMIAdaptor (proxy: $Proxy48 implements interface org.jboss.jmx.adaptor.rmi.RMIAdaptor,interface org.jboss.jmx.adaptor.rmi.RMIAdaptorExt)
| +- rmi (class: org.jnp.interfaces.NamingContext)
| | +- RMIAdaptor[link -> jmx/invoker/RMIAdaptor] (class: javax.naming.LinkRef)
+- TestMyBean (class: org.jnp.interfaces.NamingContext)
| +- local (proxy: $Proxy65 implements interface com.wei.chen.MyBeanLocal,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject)
+- HTTPXAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
+- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
+- UserTransactionSessionFactory (proxy: $Proxy14 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
+- HTTPConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
+- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
+- TransactionSynchronizationRegistry (class: com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple)
+- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
+- UILXAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
+- UIL2XAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
+- queue (class: org.jnp.interfaces.NamingContext)
| +- A (class: org.jboss.mq.SpyQueue)
| +- testQueue (class: org.jboss.mq.SpyQueue)
| +- ex (class: org.jboss.mq.SpyQueue)
| +- DLQ (class: org.jboss.mq.SpyQueue)
| +- D (class: org.jboss.mq.SpyQueue)
| +- C (class: org.jboss.mq.SpyQueue)
| +- B (class: org.jboss.mq.SpyQueue)
+- topic (class: org.jnp.interfaces.NamingContext)
| +- testDurableTopic (class: org.jboss.mq.SpyTopic)
| +- testTopic (class: org.jboss.mq.SpyTopic)
| +- securedTopic (class: org.jboss.mq.SpyTopic)
+- console (class: org.jnp.interfaces.NamingContext)
| +- PluginManager (proxy: $Proxy49 implements interface org.jboss.console.manager.PluginManagerMBean)
+- UIL2ConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
+- HiLoKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory)
+- UILConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
+- QueueConnectionFactory (class: org.jboss.naming.LinkRefPair)
+- UUIDKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory) -
10. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
jaikiran May 8, 2008 4:46 AM (in response to thomas2008ch)+- TestMyBean (class: org.jnp.interfaces.NamingContext)
| +- local (proxy: $Proxy65 implements interface com.wei.chen.MyBeanLocal,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject)
Here's the jndi-name. You should use "TestMyBean/local" in the client while doing the lookup. By the way, are you sure that your changes to the beans and its interfaces are being picked up? I would have expected this jndi-name to look like TestMyBean/remote when using @Remote. -
11. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 4:47 AM (in response to thomas2008ch)I see in the list folowings:
+- TestMyBean (class: org.jnp.interfaces.NamingContext) | +- local (proxy: $Proxy65 implements interface com.wei.chen.MyBeanLocal,interface org.jboss.ejb3.JBossProxy,interface
It is still local though I've changed to remote in my codes.
How can I overcome it? -
12. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 4:50 AM (in response to thomas2008ch)"jaikiran" wrote:
+- TestMyBean (class: org.jnp.interfaces.NamingContext)
| +- local (proxy: $Proxy65 implements interface com.wei.chen.MyBeanLocal,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject)
By the way, are you sure that your changes to the beans and its interfaces are being picked up? I would have expected this jndi-name to look like TestMyBean/remote when using @Remote.
That's what I wondering as well. I delete the JAR and start the server again but I still see the local-jndi there. Strange. -
13. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
jaikiran May 8, 2008 4:50 AM (in response to thomas2008ch)"thomas2008ch" wrote:
How can I overcome it?
Make sure that your changes to the bean and its interfaces are being picked up. Compile those classes, recreate the jar and then clean the existing jar from the JBoss deploy folder and deploy this new jar file. -
14. Re: java.lang.ClassNotFoundException: org.jnp.interfaces.Nam
thomas2008ch May 8, 2008 5:06 AM (in response to thomas2008ch)I got it.
Many thanks!