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 to lookup 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 log, 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-tp23963809p24011365.html
Sent from the OpenEJB User mailing list archive at Nabble.com.