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 >> >> >> > >> >> >> > >> >> > >> >> > >> > >> > > >