Rmi Client cant find Server stub - java

I have a server project and a client inside it . Server runs fine . Client inside server project runs fine too . But when i create another Client project ,with the interface inside but not the server ofc, i compile it and when i try to run it i get this error . i have read a lot of stuff but nothing works yet, i tried security manager to client , i tried a lot of thinks actually and i keep getting this error, I read also that i need to start a new rmi registry for clients project i tried that to but i can't open a new one
error:
run:
Exception in thread "main" java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: RMIServer03_Stub (no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at Client.<init>(Client.java:65)
at Client.main(Client.java:141)
Caused by: java.lang.ClassNotFoundException: RMIServer03_Stub (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:396)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:186)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:219)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
... 4 more
C:\Users\blue-icon\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)

All you have to to is generate the stub clas with rmic and deploy it to the client.
This is mentioned in every worthwhile RMI tutorial. Rather surprising that you didn't encounter it.

Related

Having errors on Java RMI Server/Client Implementation

I'm currently following a small tutorial for RMI on another thread, here is the link!
The problem I'm having is that if I put all the classes on the same project(I'm using Netbeans) then it works flawlessly, but on real life the client and the server are usually different machines, so when I try to put the Client on a different project and Implement the same interface and SomeStruct class then I get the following error:
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmiserver.SomeInterface (no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at clientrmi.SomeClient.main(SomeClient.java:17)
Caused by: java.lang.ClassNotFoundException: rmiserver.SomeInterface (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:556)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:311)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:255)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1559)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
... 3 more
and if I Implement the following code on the client :
if(System.getSecurityManager() == null) {
System.setSecurityManager(new SecurityManager());
}
then I get the following error:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1234" "connect,resolve")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:457)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
at java.net.Socket.connect(Socket.java:584)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
Any ideas on how to fix this? Any input is truly appreciated!
I think your problem is that you need a total of 3 projects:
First project contains the interface.
Second project contains the Server and add the first project as one of the libraries.
Third project contains the Client and add the first project as one of the libraries.
The key is that the client and server projects each have to have the interface (the same interface) inside the project.
Your error:
java.lang.ClassNotFoundException: rmiserver.SomeInterface (no security manager: RMI class loader disabled)
Says that it can't find your class: SomeInterface.
I don't think the Security Manager is your real problem.
Hope that helps.

ClassLoader classcastexception with activemq client

I have been struggling with this problem for a while now, decided to ask the community, hoping to get some hints/answers.
I am using tomcat 7.0.54 as my J2EE container which has a WAR deployed with dependency on activemq-all.
Along with the above, I'm also placing a jar in the classpath to register a listener programmatically, by implementing the ServletContainerInitializer interface. This initializes a simple implementation of an active mq client, JvmMessageProducerImpl (I have activemq-client as a dependency in the pom).
With the above setup, when i try to start tomcat, i get the below exception. It seems that instead of loading the classes independently, the listener which is called when the web application starts, is finding an existing instance of TcpTransportFactory and throwing the ClassCastException. I have read the classloader manual for tomcat multiple times, and my understanding is that each of the war files should have independent Class loaders - but dont completely understand why the exception is being thrown?
javax.jms.JMSException: Could not create Transport. Reason: java.io.IOException: Transport scheme NOT recognized: [tcp]
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:317)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:330)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:251)
at com.monitoreverywhere.jvmmon.mq.JvmMessageProducerImpl.setup(JvmMessageProducerImpl.java:66)
at com.monitoreverywhere.jvmmon.mq.JvmMessageProducerImpl$Runner.run(JvmMessageProducerImpl.java:163)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.IOException: Transport scheme NOT recognized: [tcp]
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
at org.apache.activemq.transport.TransportFactory.findTransportFactory(TransportFactory.java:181)
at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:63)
at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:315)
... 5 more
Caused by: java.lang.ClassCastException: org.apache.activemq.transport.tcp.TcpTransportFactory cannot be cast to org.apache.activemq.transport.TransportFactory
at org.apache.activemq.transport.TransportFactory.findTransportFactory(TransportFactory.java:178)
... 7 more

java.io.IOException - Java

I am getting repeatedly below error while running java application on IBM - WebSphere Application Server.
[ 00000024 TCP E org.jgroups.protocols.TP$IncomingPacket run failed handling incoming message
java.io.IOException: failed reading header
at org.jgroups.Message.readHeader(Message.java:757)
at org.jgroups.Message.readFrom(Message.java:643)
at org.jgroups.protocols.TP.readMessage(TP.java:1502)
at org.jgroups.protocols.TP.access$700(TP.java:49)
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1804)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:906)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:929)
at java.lang.Thread.run(Thread.java:773)
Caused by: java.io.EOFException
at java.io.DataInputStream.readShort(DataInputStream.java:309)
at org.jgroups.Message.readHeader(Message.java:734)
... 7 more
java.io.IOException: failed reading header
at org.jgroups.Message.readHeader(Message.java:757)
at org.jgroups.Message.readFrom(Message.java:643)
at org.jgroups.protocols.TP.readMessage(TP.java:1502)
at org.jgroups.protocols.TP.access$700(TP.java:49)
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1804)
at java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:1763)
at org.jgroups.util.ShutdownRejectedExecutionHandler.rejectedExecution(ShutdownRejectedExecutionHandler.java:39)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:779)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:667)
at org.jgroups.protocols.TP.dispatchToThreadPool(TP.java:1354)
at org.jgroups.protocols.TP.receive(TP.java:1321)
at org.jgroups.protocols.BasicTCP.receive(BasicTCP.java:258)
at org.jgroups.blocks.BasicConnectionTable.receive(BasicConnectionTable.java:239)
at org.jgroups.blocks.BasicConnectionTable$Connection.run(BasicConnectionTable.java:664)
at java.lang.Thread.run(Thread.java:773)
Caused by: java.io.EOFException
at java.io.DataInputStream.readShort(DataInputStream.java:309)
at org.jgroups.Message.readHeader(Message.java:734)
... 14 more
Application has file export operation. Somehow files are deleted from specified location and whenever I try to run application through above exception continuously. I tried killing java but that too do not help.
Please suggest how to resolve.
Stop IBM Webservice application already started services from services.msc :)

Issue in creating an instance of JAX-WS client to access the service

Iam new to Webservices.
Iam trying to create a JAX- WS client from a WSDL file . Using RAD 8.0 , I generated the classes including the proxy ,SEI and the Webservice client .Now iam trying to hit the exposed webservice methods as a standalone application .
I have added jaxws-rt-2.1.4.jar to the classpath also .
From the main class ,if i try to create an instance of the client to access the service iam getting the following error .
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.J9VMInternals.initialize(J9VMInternals.java:227)
at java.lang.J9VMInternals.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1345)
at java.util.ServiceLoader$ServiceIterator.next(ServiceLoader.java:195)
at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:146)
at javax.xml.ws.spi.Provider.provider(Provider.java:106)
at javax.xml.ws.Service.<init>(Service.java:57)
at com.royalbank.wcm_ap.ws_client.rbcauth.v1.AnPAuth.<init>(AnPAuth.java:35)
at com.royalbank.wcm_ap.ws_client.rbcauth.v1.TestClass.main(TestClass.java:53)
Caused by: javax.xml.ws.WebServiceException: Error creating JAXBContext for W3CEndpointReference.
at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:222)
at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:218)
at java.security.AccessController.doPrivileged(AccessController.java:203)
at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:217)
at com.sun.xml.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:88)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:205)
... 8 more
Caused by: javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.ibm.xml.xlxp2.jaxb.JAXBContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:207)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:401)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:618)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:565)
at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:220)
Am i missing something here with regard to the configurations ? thanks in advance :)
The Missing class "com.ibm.xml.xlxp2.jaxb.JAXBContextFactory" is available in the jar "com.ibm.jaxws.thinclient_8.5.0.jar" which will be available in the server runtime directory for Websphere App server : C:\Program Files\IBM\WebSphere\AppServer\runtimes.
Please include this jar for compile purpose only and donot include this in your WAR or EAR as it will conflict with your server runtime library jar.
For server WAS 8.0 the path jar would be "com.ibm.jaxws.thinclient_8.0.0.jar".

JAVA RMI Client

I have the problem that my RMI Application Client isn't working when i hit the "run" Button in Eclipse. It throws the following exception:
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.net.MalformedURLException: unknown protocol: rsrc
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
...
I looked on the internet and people seem to have that problem when generating JARs from eclipse. But my (ant-built) jars work fine, just inside Eclipse it's not doing as it should!
InterfaceRemota objetoRemoto = (InterfaceRemota)Naming.lookup("//localhost:1097/ObjetoRemoto");
I found a solution, before starting the rmiregistry server I have to clean the java classpath using "set CLASSPATH="
c: > set CLASSPATH=
c: > rmiregistry

Categories