geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tomasz Mazan <win...@wp.pl>
Subject Re: Is there any reason to use @Remote for session bean...
Date Mon, 20 Aug 2007 09:52:44 GMT
David, thanks for your reply
>
> On Aug 20, 2007, at 2:12 AM, Tomasz Mazan wrote:
>
>> David Blevins pisze:
>>>
>>> On Aug 17, 2007, at 3:51 AM, Tomasz Mazan wrote:
>>>
>>>>
>>>> ..if there's no global jndi context and I can't get SBean within my
>>>> standalone java application client?
>>>> In addition - there's no chance to run old EJB2 application with 
>>>> remote
>>>> client on Geronimo 2.0. May I'm wrong - so, please help me to 
>>>> understand
>>>> this "feature".
>>>
>>> EJB 1.1, EJB 2.x and EJB 3.0 standalone clients do work.
>>>
>>> To connect to the server using the default settings:
>>>
>>>             Properties props = new Properties();
>>>             props.put("java.naming.factory.initial", 
>>> "org.apache.openejb.client.RemoteInitialContextFactory");
>>>             props.put("java.naming.provider.url", "foo://127.0.0.1:" 
>>> + port);
>>>             InitialContext context = new InitialContext(props);
>>>
>>> The JNDI Names for each bean are printed in INFO in the 
>>> OpenEJB.startup log cagetory, which you can enable by adding this:
>>>
>>>   log4j.logger.OpenEJB.startup=INFO
>>>
>>> ..to your var/log/server-log4j.properties file
>>>
>>> The output should look similar to the following:
>>>
>>> INFO - Assembling app: 
>>> /Users/dblevins/work/openejb3/itests/openejb-itests-beans/target/classes 
>>>
>>> INFO - Jndi(name=client/tests/entity/cmp/BasicCmpHome)
>>> INFO - Jndi(name=client/tests/entity/cmp/ComplexCmpHome)
>>> INFO - Jndi(name=client/tests/entity/cmp/UnknownCmpHome)
>>> INFO - Jndi(name=client/tests/entity/cmp2/BasicCmpHome)
>>> INFO - Jndi(name=client/tests/entity/cmp2/ComplexCmpHome)
>>> INFO - Jndi(name=client/tests/entity/cmp2/UnknownCmpHome)
>>> INFO - Jndi(name=client/tests/entity/cmp/allowed_operations/EntityHome)
>>> INFO - 
>>> Jndi(name=client/tests/entity/cmp2/allowed_operations/EntityHome)
>>> INFO - Jndi(name=client/tests/entity/cmp/EncBean)
>>> INFO - Jndi(name=client/tests/entity/cmp2/EncBean)
>>> INFO - Jndi(name=client/tests/entity/cmp/ContextLookupCmpBean)
>>> INFO - Jndi(name=client/tests/entity/cmp/RMI-over-IIOP/EJBHome)
>>> INFO - Jndi(name=client/tests/entity/cmp2/RMI-over-IIOP/EJBHome)
>>> INFO - Jndi(name=client/tests/entity/cmr/oneToOne/PersonLocal)
>>> INFO - Jndi(name=client/tests/entity/cmr/oneToOne/LicenseLocal)
>>> INFO - Jndi(name=client/tests/entity/cmr/oneToMany/ArtistLocal)
>>> INFO - Jndi(name=client/tests/entity/cmr/oneToMany/SongLocal)
>>> INFO - Jndi(name=client/tests/entity/cmr/manyToMany/GameLocal)
>>>
>>> There is an open issue (GERONIMO-2884) regarding the default jndi 
>>> names you may want to check out if you names like 
>>> "geronimo-deploymentUtil5840.tmpdir/FooBeanBusinessRemote.
>>>
>>> Changing the format of the JNDI names is fine.  The only drawback is 
>>> offical javaee 5 application-client.xml style clients will no longer 
>>> be able to look up ejbs (well, not using the java:comp/env snytax 
>>> anyway, they could still look them up as standalone applications 
>>> do).  See the info on this page on how to reset the 
>>> openejb.jndiname.format system variable:
>>>
>>>   http://openejb.apache.org/jndi-names.html
>>>
>>> The default value is "{deploymentId}/{interfaceClass}"
>>>
>>> Hmmm... Looking at the code right now I see that its actually a bit 
>>> tricky to set the "openejb.jndiname.format" property -- normally 
>>> setting it as a system property would do the trick, but I see we're 
>>> not checking to see if it was set before stuffing in the default.
>>>
>>> If you want to change the format, let me know and I will show you a 
>>> couple options.
>>>
>>> -David
>> David, thank you for your response, and.... please help :-)
>>
>> I've configured connection to context with theese settings
>>
>>        Properties properties = new Properties();
>>        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
>> "org.apache.openejb.client.RemoteInitialContextFactory");
>>        properties.setProperty(Context.PROVIDER_URL, 
>> "ejbd://localhost:4201");
>>        this.ctx = new InitialContext(properties);
>>
>> and try to get remote SB with method
>>    this.ctx.lookup("EJBtest-1.0.jar/CustomerFacade");
>> and get instance of.... org.apache.openejb.client.JNDIContext.. where 
>> is my session bean?!
>
> I think you need to append the name of the interface you are trying to 
> get.  You could list the context to find out exactly what is bound there.
CustomerFacade is the name of my interface that i try to get and when i 
try to list the context using JNDIContext.list method - method throws 
exception javax.namin.OperationNotSupportedException: TODO: Needs to be 
implemented
>>
>> There is CustomerFacade in JNDIViewer tree - Geronimo Console, but....
>>
>> 2) Although I set key log4j.logger.OpenEJB.startup to value INFO, 
>> there's no jndi messages on console
>>
>> 3) May it be independent troublem, but I use persistence unit, with 
>> properly configured (on server) connectio pool, and when I explore 
>> (click) via jndi viewer, geronimo console prints error like
>> javax.naming.NotContextException: 
>> geronimo/env/pl.netia.fonbsa.core.dao.facade.impl.CommonFacadeImpl/entityManager

>>
>>        at 
>> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:161)

>>
>>        at 
>> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:611)

>>
>>        at 
>> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:152)

>>
>>        at 
>> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:597)

>>
>>        at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>        at 
>> org.apache.openejb.core.ivm.naming.JndiUrlReference.getObject(JndiUrlReference.java:34)

>>
>> This problem is common for my application and geronimo examples from 
>> official site.
>
> entity managers are not bound to global jndi, so this is not 
> surprising.  Can your session bean get its entity manager?
I don't know yet, but I can't get my session bean. However, Geronimo's 
examples works, so I suspect that it's beans use entity managers correctly.
Have you any solution for my "context" problem?

Tomasz Mazan

Mime
View raw message