Hi, I'm always on my initial problem : how to enable remoting services (EJBD, HTTPEJB, ...) from OpenEJB OSGi integration.
The next part to understand why it doesn't working, i'm looking for to the OpenEJB Eclipse plugin side. I have download OpenEJB Eclipse plugin from this repository http://people.apache.org/~jgallimore/update-site/. Several plugins have been installed into my "plugin" directory in particular this one : org.apache.openejb.server_1.0.2.jar. So, i noticed several points related to the org.apache.openejb.server_1.0.2 bundle , very strange ... - What's the purpose of this bundle, standalone server can be started thanks to OpenEJB path specified by openejb.home. In fact, i have removed this bundle from plugin repository, restart my favorite Eclipse and the standalone server is working. - Any openejb.xml file is available into the org.apache.openejb.server_1.0.2 bundle. However if you look at the OpenEJBServer java code from this bundle, this file must be into this bundle (see baseDir variable). So, this bundle can't work ... Mickael Keulkeul wrote: > > Below, you find the Java code related to the call of EJB in remoting way. > > try { > Properties properties = new Properties(); > properties.put(Context.INITIAL_CONTEXT_FACTORY, > "org.openejb.client.RemoteInitialContextFactory"); > properties.put(Context.PROVIDER_URL, "ejbd://localhost:" + "4202"); > > InitialContext context = new InitialContext(properties); > > NamingEnumeration<Binding> listBindings = context.listBindings(""); > Map<String, Object> map = new HashMap<String, Object>(); > while (listBindings.hasMoreElements()) { > Binding pair = listBindings.nextElement(); > System.out.println(pair.getName()); > // map.put(pair.getName(), pair.getObject()); > } > > Object ref = context.lookup("EchoImplRemote"); > > } catch (Exception e) { > e.printStackTrace(); > } > } > > I can't lookup remoting object because a nullpointer exception is thrown. > But i can enumerate EJB naming. > > . > EchoImplRemote > EJBBonjourRemote > java.lang.NullPointerException > at > org.apache.openejb.client.JNDIContext.createBusinessObject(JNDIContext.java:203) > at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:247) > at javax.naming.InitialContext.lookup(InitialContext.java:392) > at test.openejb.remote.StandaloneClient.main(StandaloneClient.java:84) > > > From the OpenEJB server side logs, i notice that there is one method have > been invoked > > INFO - invoking method create on EchoImpl > DEBUG - finished invoking method create. Return > value:proxy=fr.ensma.lisi.testejbbundle.Echo;deployment=EchoImpl;pk=null > DEBUG - JNDI REQUEST: JNDI_LOOKUP:null:EchoImplRemote -- RESPONSE: > JNDI_BUSINESS_OBJECT:STATELESS:EchoImpl:fr.ensma.lisi.testejbbundle.Echo > DEBUG - JNDI REQUEST: JNDI_LOOKUP:null:EchoImplRemote -- RESPONSE: > JNDI_BUSINESS_OBJECT:STATELESS:EchoImpl:fr.ensma.lisi.testejbbundle.Echo > > As you can see, pk value is null > > Thanks a lot > > Mickael > > > > Jonathan Gallimore-2 wrote: >> >> That looks good to me- I did have a look around the code, and your >> suggestion was pretty much what I was thinking. I didn't get enough >> time to get it working due to work commitments. I'm away for a couple >> of days, but will keep playing with this if I can. >> >> Can you send the stack trace for your NullPointerException? >> >> Cheers, >> >> Jon >> >> Sent from my iPhone >> >> On 13 Jun 2009, at 08:38, Keulkeul <[email protected]> wrote: >> >>> >>> Hi, >>> >>> I just noticed that to try to execute OpenEJB container in remotable >>> context, i was creating new InitialContext object (with >>> openejb.embedded.remotable key initialization) into the start method >>> of the >>> TestEJB bundle. >>> >>> Bundle bundle = context.getBundle(); >>> OpenEjbApplication application = new OpenEjbApplication(bundle); >>> context.registerService(OpenEjbApplication.class.getName(), >>> application, >>> null); >>> >>> // New Instructions ... >>> Properties properties = new Properties(); >>> properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, >>> "org.apache.openejb.client.LocalInitialContextFactory"); >>> properties.setProperty("openejb.embedded.remotable", "true"); >>> >>> new InitialContext(properties); >>> >>> I think it is wrong way, because i suppose that the >>> openejb.embedded.remotable parameter must be activated into the >>> classes of >>> the org.apache.openejb.server bundle. >>> >>> So now, i am trying to create an EJBD server in explicity way. >>> Thanks to the >>> JUnit class tests of OpenEJB, i have created an EJBD server into the >>> OpenEJBServer class of the org.apache.openejb.server bundle, like >>> this: >>> >>> public void init(File baseDir) throws OpenEJBException { >>> ... >>> properties.put("openejb.home", homeDir.getAbsolutePath()); >>> properties.put("openejb.base", baseDir.getAbsolutePath()); >>> properties.put("openejb.configuration", >>> configFile.getAbsolutePath()); >>> properties.put("openejb.deployments.classpath", "false"); >>> >>> OpenEJB.init(properties); >>> >>> EjbServer ejbServer = new EjbServer(); >>> Properties initProps = new Properties(); >>> try { >>> ejbServer.init(initProps); >>> ServiceDaemon serviceDaemon = new ServiceDaemon(ejbServer, 0, >>> "localhost"); >>> serviceDaemon.start(); >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> } >>> >>> So, the EJBD server is created. I can connect a standalone >>> application to >>> EJBD protocol (it's working), i can enumerate EJB naming (it's >>> working). >>> >>> But i can't to lookup object because a nullpointer exception is >>> thrown. I >>> suppose the classpath isn't initialized into the EJBD server >>> configuration >>> ... >>> >>> Do you think i'm crazy to do like this ? >>> >>> Mickael >>> >>> >>> Jonathan Gallimore-2 wrote: >>>> >>>> That's a total guess on my part. I'm going have a quick play around >>>> with >>>> this now, I'll let you know if I get it going :) >>>> >>>> Jon >>>> >>>> On Thu, Jun 11, 2009 at 8:26 PM, Keulkeul <[email protected]> >>>> wrote: >>>> >>>>> >>>>> Hi Jonathan, >>>>> >>>>> Thanks for your replying. >>>>> >>>>> Your said "so I suspect that either the setting you're applying >>>>> isn't >>>>> being >>>>> passed through to the OpenEJB server in the bundle". I don't think >>>>> so >>>>> because when i'm setting InitialContext with >>>>> openejb.embedded.remotable >>>>> key >>>>> value, it is taken into account because the following message is >>>>> displaying >>>>> >>>>> ** Starting Services ** >>>>> NAME IP PORT >>>>> >>>>> Mickael >>>>> >>>>> >>>>> >>>>> Jonathan Gallimore-2 wrote: >>>>>> >>>>>> I had to comment something out in terms of applying properties to >>>>>> the >>>>>> embedded OpenEJB in the code I put up on my people.apache.org >>>>>> page, as >>>>> I >>>>>> was >>>>>> getting a ConcurrentModificationException with the code left in, >>>>>> so I >>>>>> suspect that either the setting you're applying isn't being passed >>>>> through >>>>>> to the OpenEJB server in the bundle. >>>>>> >>>>>> I'll have a poke around the code this evening and see if I can >>>>>> get it >>>>>> working with remotable working. >>>>>> >>>>>> Jon >>>>>> >>>>>> On Wed, Jun 10, 2009 at 3:45 PM, Keulkeul <[email protected]> >>>>> wrote: >>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I am using OpenEJB 3.1.1 with the Equinox OSGi container thanks to >>>>> this >>>>>>> post >>>>>>> (http://openejb.apache.org/osgi-openejb.html) and this topic >>>>>>> (http://www.nabble.com/OpenEJB-and-OSGi-td23423565.html#a23423565) >>>>>>> related >>>>>>> to the OpenEJB OSGi integration. I can create one bundle with >>>>>>> several >>>>> EJB >>>>>>> stateless POJOs and it is working fine. >>>>>>> >>>>>>> So now, i would like to implement WebServices in using EJB >>>>>>> Stateless >>>>>>> annoted >>>>>>> with the @stateless and @Webservice instructions (like >>>>>>> HelloEjbService >>>>>>> class >>>>>>> example located into the openejb-examples-3.1 examples package). >>>>>>> >>>>>>> However, i have a problem during the initialization of the OpenEJB >>>>>>> InitialContext. I suppose that OpenEJB must be executed in >>>>>>> remotable >>>>>>> context, so openejb.embedded.remotable key is fixed to true value. >>>>> But, >>>>>>> no >>>>>>> server (httpejbd, ejbd) have been created. >>>>>>> >>>>>>> With OpenEJB OSGi integration i'm getting >>>>>>> >>>>>>> ** Starting Services ** >>>>>>> NAME IP PORT >>>>>>> >>>>>>> In opposition, without OpenEJB OSGi integration i was getting >>>>>>> >>>>>>> ** Starting Services ** >>>>>>> NAME IP PORT >>>>>>> httpejbd 127.0.0.1 4204 >>>>>>> admin thread 127.0.0.1 4200 >>>>>>> ejbd localhost 4202 >>>>>>> >>>>>>> In fact, i would like your opinion about this issue. >>>>>>> >>>>>>> Is anybody test another kind of EJB into OpenEJB OSGi >>>>>>> integration like >>>>>>> WebService ? or just calling EJBs declared into a bundle in >>>>>>> remote way >>>>> ? >>>>>>> >>>>>>> Mickael >>>>>>> -- >>>>>>> View this message in context: >>>>>>> >>>>> http://www.nabble.com/OpenEJB%2C-OSGi-and-OpenEJB3%27s-remoting-capabilities-tp23963809p23963809.html >>>>>>> Sent from the OpenEJB User mailing list archive at Nabble.com. >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/OpenEJB%2C-OSGi-and-OpenEJB3%27s-remoting-capabilities-tp23963809p23987456.html >>>>> Sent from the OpenEJB User mailing list archive at Nabble.com. >>>>> >>>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/OpenEJB%2C-OSGi-and-OpenEJB3%27s-remoting-capabilities-tp23963809p24010064.html >>> Sent from the OpenEJB User mailing list archive at Nabble.com. >>> >> >> > > -- View this message in context: http://www.nabble.com/OpenEJB%2C-OSGi-and-OpenEJB3%27s-remoting-capabilities-tp23963809p24063826.html Sent from the OpenEJB User mailing list archive at Nabble.com.
