You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Wilingson <wm...@gmail.com> on 2008/10/30 13:43:45 UTC

Help: Eclipse RCP as remote OpenEJB client

I have an eclipse RCP application based on eclipse 3.4. I want it to connect
remotely to and openejb server. I have openejb-client-3.0.jar on the
classpath. My connection and lookup code is as follows:

try {
		Properties properties = new Properties();
	        properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.RemoteInitialContextFactory");
	        InitialContext ctx = new InitialContext(properties);
	        Server s = (Server) ctx.lookup(Server.class.getName()+"Remote");
		} catch (Exception e) {
			e.printStackTrace();
		}

This piece of code bombs out at the line : Server s = (Server)
ctx.lookup(Server.class.getName()+"Remote");
with the following stack trace:

java.lang.IllegalArgumentException: interface
org.apache.openejb.client.EJBObjectProxy is not visible from class loader
	at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
	at
org.apache.openejb.client.proxy.Jdk13ProxyFactory.newProxyInstance(Jdk13ProxyFactory.java:118)
	at
org.apache.openejb.client.proxy.ProxyManager.newProxyInstance(ProxyManager.java:107)
	at
org.apache.openejb.client.EJBObjectHandler.createEJBObjectProxy(EJBObjectHandler.java:102)
	at
org.apache.openejb.client.JNDIContext.createBusinessObject(JNDIContext.java:207)
	at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:248)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at
zw.co.synergy.supervision.SuperVisionPlugin.start(SuperVisionPlugin.java:45)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:1009)
	at java.security.AccessController.doPrivileged(Native Method)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1003)
	at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:984)
	at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
	at
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
	at
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
	at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
	at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:427)
	at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
	at
org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:368)
	at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:444)
	at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:397)
	at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:385)
	at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at
org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:313)
	at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
	at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1274)
	at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:160)
	at
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:867)
	at
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
	at
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
	at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:188)
	at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
	at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	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:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
-- 
View this message in context: http://www.nabble.com/Help%3A-Eclipse-RCP-as-remote-OpenEJB-client-tp20246147p20246147.html
Sent from the OpenEJB User mailing list archive at Nabble.com.


Re: Help: Eclipse RCP as remote OpenEJB client

Posted by Wilingson <wm...@gmail.com>.

Wilingson wrote:
> 
> Your are right, thanks. In my code the class Server is an interface to a
> bean and its in a different bundle. If you move that class to the bundle
> where this piece of code is, it works fine. Its working now this way but
> some interfaces are provided by other bundles and they can not be used.
> The thing is if I put openejb-client-3.0.jar on the classpath of the
> bundle where Server class is in, the code does not work. 
> I will look further and see how I can get around this one, because I can't
> have on the interfaces I require in this one bundle.
> 


David Blevins wrote:
> 
> This is a tricky one.  Both the  
> org.apache.openejb.client.RemoteInitialContextFactory and  
> org.apache.openejb.client.EJBObjectProxy are in the same jar so should  
> be available equally.
> 
> I wonder if eclipse is changing the thread context classloader to one  
> that doesn't contain the openejb-client library.  Right before your  
> lookup call, execute some code like this to see what is there.
> 
>    ClassLoader cl = Thread.currentThread().getContextClassLoader();
>    cl.loadClass("org.apache.openejb.client.EJBObjectProxy");
> 
> We use the thread context classloader to deserialize the objects that  
> come off the wire, so if it's changed to a classloader that doesn't  
> contain your app and the openejb-client jar than nothing will work.
> 
> -David
> 
> On Oct 30, 2008, at 5:43 AM, Wilingson wrote:
> 
>>
>> I have an eclipse RCP application based on eclipse 3.4. I want it to  
>> connect
>> remotely to and openejb server. I have openejb-client-3.0.jar on the
>> classpath. My connection and lookup code is as follows:
>>
>> try {
>> 		Properties properties = new Properties();
>> 	        properties.put(Context.INITIAL_CONTEXT_FACTORY,
>> "org.apache.openejb.client.RemoteInitialContextFactory");
>> 	        InitialContext ctx = new InitialContext(properties);
>> 	        Server s = (Server) ctx.lookup(Server.class.getName() 
>> +"Remote");
>> 		} catch (Exception e) {
>> 			e.printStackTrace();
>> 		}
>>
>> This piece of code bombs out at the line : Server s = (Server)
>> ctx.lookup(Server.class.getName()+"Remote");
>> with the following stack trace:
>>
>> java.lang.IllegalArgumentException: interface
>> org.apache.openejb.client.EJBObjectProxy is not visible from class  
>> loader
>> 	at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
>> 	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
>> 	at
>> org 
>> .apache 
>> .openejb 
>> .client 
>> .proxy.Jdk13ProxyFactory.newProxyInstance(Jdk13ProxyFactory.java:118)
>> 	at
>> org 
>> .apache 
>> .openejb 
>> .client.proxy.ProxyManager.newProxyInstance(ProxyManager.java:107)
>> 	at
>> org 
>> .apache 
>> .openejb 
>> .client.EJBObjectHandler.createEJBObjectProxy(EJBObjectHandler.java: 
>> 102)
>> 	at
>> org 
>> .apache 
>> .openejb.client.JNDIContext.createBusinessObject(JNDIContext.java:207)
>> 	at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:248)
>> 	at javax.naming.InitialContext.lookup(InitialContext.java:392)
>> 	at
>> zw 
>> .co 
>> .synergy.supervision.SuperVisionPlugin.start(SuperVisionPlugin.java: 
>> 45)
>> 	at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl 
>> $2.run(BundleContextImpl.java:1009)
>> 	at java.security.AccessController.doPrivileged(Native Method)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework 
>> .internal 
>> .core.BundleContextImpl.startActivator(BundleContextImpl.java:1003)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework 
>> .internal.core.BundleContextImpl.start(BundleContextImpl.java:984)
>> 	at
>> org 
>> .eclipse 
>> .osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java: 
>> 346)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
>> 	at
>> org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java: 
>> 400)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .runtime 
>> .internal 
>> .adaptor 
>> .EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .baseadaptor 
>> .loader.ClasspathManager.findLocalClass(ClasspathManager.java:427)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .internal 
>> .baseadaptor 
>> .DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework 
>> .internal.core.BundleLoader.findLocalClass(BundleLoader.java:368)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework 
>> .internal.core.BundleLoader.findClassInternal(BundleLoader.java:444)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework.internal.core.BundleLoader.findClass(BundleLoader.java:397)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework.internal.core.BundleLoader.findClass(BundleLoader.java:385)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .internal 
>> .baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework.internal.core.BundleLoader.loadClass(BundleLoader.java:313)
>> 	at
>> org 
>> .eclipse 
>> .osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java: 
>> 227)
>> 	at
>> org 
>> .eclipse 
>> .osgi 
>> .framework 
>> .internal.core.AbstractBundle.loadClass(AbstractBundle.java:1274)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .internal 
>> .registry 
>> .osgi 
>> .RegistryStrategyOSGI 
>> .createExecutableExtension(RegistryStrategyOSGI.java:160)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .internal 
>> .registry 
>> .ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java: 
>> 867)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .internal 
>> .registry 
>> .ConfigurationElement 
>> .createExecutableExtension(ConfigurationElement.java:243)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .internal 
>> .registry 
>> .ConfigurationElementHandle 
>> .createExecutableExtension(ConfigurationElementHandle.java:51)
>> 	at
>> org 
>> .eclipse 
>> .equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:188)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .runtime 
>> .internal 
>> .adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java: 
>> 110)
>> 	at
>> org 
>> .eclipse 
>> .core 
>> .runtime 
>> .internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>> 	at
>> org 
>> .eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 
>> 382)
>> 	at
>> org 
>> .eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 
>> 179)
>> 	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:597)
>> 	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
>> 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>> 	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>> 	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>> -- 
>> View this message in context:
>> http://www.nabble.com/Help%3A-Eclipse-RCP-as-remote-OpenEJB-client-tp20246147p20246147.html
>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Help%3A-Eclipse-RCP-as-remote-OpenEJB-client-tp20246147p20423501.html
Sent from the OpenEJB User mailing list archive at Nabble.com.


Re: Help: Eclipse RCP as remote OpenEJB client

Posted by David Blevins <da...@visi.com>.
This is a tricky one.  Both the  
org.apache.openejb.client.RemoteInitialContextFactory and  
org.apache.openejb.client.EJBObjectProxy are in the same jar so should  
be available equally.

I wonder if eclipse is changing the thread context classloader to one  
that doesn't contain the openejb-client library.  Right before your  
lookup call, execute some code like this to see what is there.

   ClassLoader cl = Thread.currentThread().getContextClassLoader();
   cl.loadClass("org.apache.openejb.client.EJBObjectProxy");

We use the thread context classloader to deserialize the objects that  
come off the wire, so if it's changed to a classloader that doesn't  
contain your app and the openejb-client jar than nothing will work.

-David

On Oct 30, 2008, at 5:43 AM, Wilingson wrote:

>
> I have an eclipse RCP application based on eclipse 3.4. I want it to  
> connect
> remotely to and openejb server. I have openejb-client-3.0.jar on the
> classpath. My connection and lookup code is as follows:
>
> try {
> 		Properties properties = new Properties();
> 	        properties.put(Context.INITIAL_CONTEXT_FACTORY,
> "org.apache.openejb.client.RemoteInitialContextFactory");
> 	        InitialContext ctx = new InitialContext(properties);
> 	        Server s = (Server) ctx.lookup(Server.class.getName() 
> +"Remote");
> 		} catch (Exception e) {
> 			e.printStackTrace();
> 		}
>
> This piece of code bombs out at the line : Server s = (Server)
> ctx.lookup(Server.class.getName()+"Remote");
> with the following stack trace:
>
> java.lang.IllegalArgumentException: interface
> org.apache.openejb.client.EJBObjectProxy is not visible from class  
> loader
> 	at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
> 	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
> 	at
> org 
> .apache 
> .openejb 
> .client 
> .proxy.Jdk13ProxyFactory.newProxyInstance(Jdk13ProxyFactory.java:118)
> 	at
> org 
> .apache 
> .openejb 
> .client.proxy.ProxyManager.newProxyInstance(ProxyManager.java:107)
> 	at
> org 
> .apache 
> .openejb 
> .client.EJBObjectHandler.createEJBObjectProxy(EJBObjectHandler.java: 
> 102)
> 	at
> org 
> .apache 
> .openejb.client.JNDIContext.createBusinessObject(JNDIContext.java:207)
> 	at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:248)
> 	at javax.naming.InitialContext.lookup(InitialContext.java:392)
> 	at
> zw 
> .co 
> .synergy.supervision.SuperVisionPlugin.start(SuperVisionPlugin.java: 
> 45)
> 	at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl 
> $2.run(BundleContextImpl.java:1009)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework 
> .internal 
> .core.BundleContextImpl.startActivator(BundleContextImpl.java:1003)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework 
> .internal.core.BundleContextImpl.start(BundleContextImpl.java:984)
> 	at
> org 
> .eclipse 
> .osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java: 
> 346)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
> 	at
> org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java: 
> 400)
> 	at
> org 
> .eclipse 
> .core 
> .runtime 
> .internal 
> .adaptor 
> .EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
> 	at
> org 
> .eclipse 
> .osgi 
> .baseadaptor 
> .loader.ClasspathManager.findLocalClass(ClasspathManager.java:427)
> 	at
> org 
> .eclipse 
> .osgi 
> .internal 
> .baseadaptor 
> .DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework 
> .internal.core.BundleLoader.findLocalClass(BundleLoader.java:368)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework 
> .internal.core.BundleLoader.findClassInternal(BundleLoader.java:444)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework.internal.core.BundleLoader.findClass(BundleLoader.java:397)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework.internal.core.BundleLoader.findClass(BundleLoader.java:385)
> 	at
> org 
> .eclipse 
> .osgi 
> .internal 
> .baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework.internal.core.BundleLoader.loadClass(BundleLoader.java:313)
> 	at
> org 
> .eclipse 
> .osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java: 
> 227)
> 	at
> org 
> .eclipse 
> .osgi 
> .framework 
> .internal.core.AbstractBundle.loadClass(AbstractBundle.java:1274)
> 	at
> org 
> .eclipse 
> .core 
> .internal 
> .registry 
> .osgi 
> .RegistryStrategyOSGI 
> .createExecutableExtension(RegistryStrategyOSGI.java:160)
> 	at
> org 
> .eclipse 
> .core 
> .internal 
> .registry 
> .ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java: 
> 867)
> 	at
> org 
> .eclipse 
> .core 
> .internal 
> .registry 
> .ConfigurationElement 
> .createExecutableExtension(ConfigurationElement.java:243)
> 	at
> org 
> .eclipse 
> .core 
> .internal 
> .registry 
> .ConfigurationElementHandle 
> .createExecutableExtension(ConfigurationElementHandle.java:51)
> 	at
> org 
> .eclipse 
> .equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:188)
> 	at
> org 
> .eclipse 
> .core 
> .runtime 
> .internal 
> .adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java: 
> 110)
> 	at
> org 
> .eclipse 
> .core 
> .runtime 
> .internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
> 	at
> org 
> .eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 
> 382)
> 	at
> org 
> .eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java: 
> 179)
> 	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:597)
> 	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
> 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> 	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
> 	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
> -- 
> View this message in context: http://www.nabble.com/Help%3A-Eclipse-RCP-as-remote-OpenEJB-client-tp20246147p20246147.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
>
>