Re: Re: Re: Re: Re: Re: Re: How to change remote JNDI-name in Jonas

Stefaan Somers <[email protected]> Tue, 9 Aug 2011 14:01:18 +0200
Newsgroups gmane.comp.java.objectweb.jonas
Message-ID <CA+N_TpUDbcHCz-Wu5OAK-q+9bW3kTvozX2gzmcT0ZxudL0o2nA@mail.gmail.com>
Guillaume,

OK but if 2 Beans normally have the same package-name & ClassName in 2
different applications (different jar-components), there can be only 1
JNDI-entry for the remote interface. So there is the danger that 1
application is going to the wrong JNDI-entry.


For example we have 2 applications with each an account-component
(with Account-bean that is used for logon information). Last time when
I deployed the 2 applications, the one application was using the
account-data from the other application.

I hope it's a bit clear for you??

Greetings,

Stefaan Somers

On 9 August 2011 13:51, Guillaume Sauthier (OW2)
<[email protected]> wrote:
> EasyBeans (the EJB3 container in JOnAS) gives priority to beans found in =
the
> same application if there is multiple match.
> The EJB3 spec mandates that behavior so you're safe :)
> Just make a try.
> --G
>
> 2011/8/9 Stefaan Somers <[email protected]>
>>
>> But,
>>
>> our applications are generated, so we can have for example 2
>> account-beans in 2 different applications. Therefore we must be able
>> to uniquely identify the 2 remote JNDI interfaces to the 2 different
>> applications. That's why we are using "mappedName"
>>
>> Greetings,
>>
>> Stefaan Somers
>>
>> On 9 August 2011 11:55, Guillaume Sauthier (OW2)
>> <[email protected]> wrote:
>> > You should also remove your mapped names (don't needed anymore because
>> > you
>> > rely on the container to find the right interface for you).
>> >
>> > --G
>> >
>> > 2011/8/9 Stefaan Somers <[email protected]>
>> >>
>> >> Hello,
>> >>
>> >> I'v tried that too, but it also injects the remote-bean then instead
>> >> of the local-bean.
>> >>
>> >> Greetings,
>> >>
>> >> Stefaan Somers
>> >>
>> >> On 9 August 2011 11:04, Guillaume Sauthier (OW2)
>> >> <[email protected]> wrote:
>> >> > Can't you change your Calculator.java to something like this:
>> >> >
>> >> > It's much more easier to read :)
>> >> >
>> >> > /**
>> >> > =A0* Session Bean implementation class Calculator
>> >> > =A0*/
>> >> > @Stateless
>> >> > public class Calculator implements CalculatorRemote, CalculatorLoca=
l
>> >> > {
>> >> >
>> >> > =A0 @EJB
>> >> > =A0 private ParametersLocal params;
>> >> >
>> >> >
>> >> > =A0=A0=A0 /**
>> >> > =A0=A0=A0=A0 * Default constructor.
>> >> > =A0=A0=A0=A0 */
>> >> > =A0=A0=A0 public Calculator() {
>> >> >
>> >> > =A0=A0=A0 }
>> >> >
>> >> > =A0=A0=A0 @Override
>> >> > =A0=A0=A0 public String returnMessage() {
>> >> > =A0=A0=A0 =A0=A0=A0 result =3D parameters.getParameter();
>> >> > =A0=A0=A0 =A0=A0=A0 return "It's all being calculated :" + result;
>> >> > =A0=A0=A0 }
>> >> >
>> >> > }
>> >> >
>> >> > 2011/8/9 Stefaan Somers <[email protected]>
>> >> >>
>> >> >> Hi Guillaume,
>> >> >> Thnks for responding. I'm already banging my head for a few days
>> >> >> with
>> >> >> this problem. So any help would be most welcome.
>> >> >>
>> >> >> I've included a sample project. For the Parameters-bean I use the
>> >> >> mappedName parameter, since I need to give it a unique-name.
>> >> >>
>> >> >> If I try to get the Local Parameters-bean with the Calculator-bean=
,
>> >> >> it
>> >> >> gives me the following exception :
>> >> >>
>> >> >> java.lang.ClassCastException: $Proxy63 cannot be cast to
>> >> >> be.sso.test.ParametersLocal
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> be.sso.test.Calculator.original$EasyBeans$returnMessage(Calculator=
.java:34)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.gen.invocationcontext.be.sso.test.Calculator.Eas=
yBeansInvocationContextImplreturnMessageAROUNDINVOKE1942950347.proceed(Unkn=
own
>> >> >> Source)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.transaction.interceptors.CMTRequiredTransactionI=
nterceptor.intercept(CMTRequiredTransactionInterceptor.java:110)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.gen.invocationcontext.be.sso.test.Calculator.Eas=
yBeansInvocationContextImplreturnMessageAROUNDINVOKE1942950347.proceed(Unkn=
own
>> >> >> Source)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.jonas.jndi.interceptors.impl.easybeans.ResourceCheckerInte=
rceptor.intercept(ResourceCheckerInterceptor.java:103)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.gen.invocationcontext.be.sso.test.Calculator.Eas=
yBeansInvocationContextImplreturnMessageAROUNDINVOKE1942950347.proceed(Unkn=
own
>> >> >> Source)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.jonas.ejb.easybeans.JOnASENCInterceptor.intercept(JOnASENC=
Interceptor.java:67)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.gen.invocationcontext.be.sso.test.Calculator.Eas=
yBeansInvocationContextImplreturnMessageAROUNDINVOKE1942950347.proceed(Unkn=
own
>> >> >> Source)
>> >> >> =A0 =A0 =A0 =A0at be.sso.test.Calculator.returnMessage(Calculator.=
java)
>> >> >> =A0 =A0 =A0 =A0at sun.reflect.NativeMethodAccessorImpl.invoke0(Nat=
ive
>> >> >> Method)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorIm=
pl.java:39)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc=
cessorImpl.java:25)
>> >> >> =A0 =A0 =A0 =A0at java.lang.reflect.Method.invoke(Method.java:597)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.container.session.stateless.StatelessSessionFact=
ory.localCall(StatelessSessionFactory.java:161)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.container.session.SessionFactory.rpcInvoke(Sessi=
onFactory.java:237)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.rpc.rmi.server.RMIServerRPCImpl.getEJBResponse(R=
MIServerRPCImpl.java:106)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.rpc.rmi.client.RMIClientRPC.sendEJBRequest(RMICl=
ientRPC.java:105)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(C=
lientRPCInvocationHandler.java:195)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(C=
lientRPCInvocationHandler.java:111)
>> >> >> =A0 =A0 =A0 =A0at $Proxy62.returnMessage(Unknown Source)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >> be.sso.servlet.CalculateServlet.doGet(CalculateServlet.java:40)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >> javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(A=
pplicationFilterChain.java:290)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati=
onFilterChain.java:206)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapp=
erValve.java:233)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardConte=
xtValve.java:191)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.jonas.web.tomcat6.CheckOpenResourcesValve.invoke(CheckOpen=
ResourcesValve.java:73)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.jonas.web.tomcat6.tx.TransactionValve.invoke(TransactionVa=
lve.java:90)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.ow2.jonas.web.tomcat6.ResetAuthenticationValve.invoke(ResetAut=
henticationValve.java:95)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValv=
e.java:127)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValv=
e.java:102)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngine=
Valve.java:109)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.=
java:340)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.j=
ava:857)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >>
>> >> >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.pr=
ocess(Http11Protocol.java:588)
>> >> >> =A0 =A0 =A0 =A0at
>> >> >>
>> >> >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java=
:489)
>> >> >> =A0 =A0 =A0 =A0at java.lang.Thread.run(Thread.java:619)
>> >> >>
>> >> >>
>> >> >>
>> >> >> On 9 August 2011 10:45, Guillaume Sauthier (OW2)
>> >> >> <[email protected]> wrote:
>> >> >> > Can't you rely on container's injection (@EJB) ?
>> >> >> > --G
>> >> >> >
>> >> >> > 2011/8/9 Stefaan Somers <[email protected]>
>> >> >> >>
>> >> >> >> Hi all,
>> >> >> >>
>> >> >> >> I need to change the remote jndi-name of a Stateless Session Be=
an
>> >> >> >> .
>> >> >> >> Default the naming for jonas is :
>> >> >> >>
>> >> >> >> SessionBean.class.getName()
>> >> >> >> + "_" + SessionBeanInterface.class.getName() + "@Remote"
>> >> >> >>
>> >> >> >> How can I change this. If I add the attribute mappedName in the
>> >> >> >> @Stateless-annotation, I cannot get to the Local Interface
>> >> >> >> anymore.
>> >> >> >> And I need to be able to get to both.
>> >> >> >>
>> >> >> >> Greetings,
>> >> >> >>
>> >> >> >> Stefaan Somers
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>
>