Call EJB3 Local bean through Remote bean from external JVM?

Local means local to EAR not to AS Your local and remote Beans must be in same EAR (not only in same AS). Are they? Edit Hmm.. If they're in the same EAR then it should work.I.e.

Answer to your question is such a setup even possible? Is Yes Unfortunately now we're talking abt pure and simple debugging. First thing I would do is try and check if teh local bean ( DatabaseBean I guess) is actually registered and working using WebPhere UTC equivalent in WebLogic (I never worked in WebLogic).

I can list a 100 other things you can check for more logs/traces/symptoms but well, that's the way debugging goes.

Local means local to EAR not to AS. Your local and remote Beans must be in same EAR (not only in same AS). Are they?

-- edit -- Hmm.. If they're in the same EAR then it should work. I.e. Answer to your question "is such a setup even possible?" is Yes.

Unfortunately now we're talking abt pure and simple debugging. First thing I would do is try and check if teh local bean (DatabaseBean I guess) is actually registered and working using WebPhere UTC equivalent in WebLogic (I never worked in WebLogic). I can list a 100 other things you can check for more logs/traces/symptoms but well, that's the way debugging goes.

Yes, they are. All of our modules (for application server A) are packaged into the same EAR and then deployed. – pHk 2 days ago I get the impression that when I call the remote service on application server B, it's application server B that will try to resolve the @EJB injection of the local bean.

That obviously doesn't work because the local bean is not deployed on B, it's deployed on A. Are you sure that this should work? – pHk 2 days ago @pHk I'm not sure what you mean by "injection", I have done this myself; differences were that AS-B was a stand alone client and it was EJB-2 not 3.

Also just theoretically, when you use a local EntityBean inside a remote SLSB's impl (a common case) you can still call SLSB from outside AS. – thekashyap 2 days ago We've been experimenting with this all day now, and we just cannot get this to work on Weblogic 10.3.3. It seems like the Weblogic EJB container refuses/can not properly inject a local bean in a remote service.

What's more is that local EJBs aren't even included in the JNDI tree by Weblogic. This might be a Weblogic issue more than it is an EJB issue. – pHk 2 days ago.

Managed to get this issue resolved. The following configuration works for Weblogic 10.3.3 and allows for a remote EJB to use a local EJB, where the remote EJB can be called from anywhere. Ultimately — after a lot of testing — the trick was apparently specifying a beanName value for the @EJB annotation used to mark the local bean as a dependency of the remote bean.

Doh! Deployment @Local EJB is deployed on AS-A in EAR-1 (in its own module/JAR) @Remote EJB is deployed on AS-A in EAR-1 (in its own module/JAR) Client code that calls the remote service is deployed on AS-B in its own EAR archive Annotations The local EJB is a very simple and straightforward EJB bean, with the following interface and implementation: @Local public interface LocalBeanLocal { // Implementation omitted } @Stateless(name = "LocalBean") public class LocalBean implements LocalBeanLocal { // Implementation omitted } The remote EJB is again a relatively simple EJB bean, except that it has a dependency on LocalBean. This dependency is expressed through the @EJB annotation; but it would seem that the beanName attribute is required for Weblogic to resolve this dependency correctly.

Without the beanName attribute, calling the remote EJB would not work for us (in the sense that there would always be some kind of error when the local bean was involved)! @Remote public interface RemoteBeanRemote { // Implementation omitted } @Stateless(name = "RemoteBean") public class RemoteBean implements RemoteBeanRemote { @EJB(beanName = "LocalBean") private LocalBeanLocal localBean; // Implementation omitted } What is apparently important here is that the beanName attribute in the remote service dependency declaration (@EJB(beanName = "LocalBean")) should have the same value as the bean name defined in the local bean implementation (@Stateless(name = "LocalBean")). Lookup Getting a reference to your remote EJB is done the traditional way, there doesn't seem to be a specific requirement.In our case, we look-up the remote service via JNDI.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions