Access Remote Session Bean from an separate web app
Hello Everyone!
I'm new here, and this is my first post, hope i get some help ..
I build a Remote EJB Session Bean :
@Stateless
public class MyEJB implements MyEJBRemote
{
public void sayHello(){ //implement ...
System.out.println("HELLO");
}
}
I deploy it on GlassFish 2 and want to access it from a servlet in an separate web application on another server.
the servlet looks like this...:
public class MyServlet extends HttpServlet
{
@EJB
MyEJBRemote bean;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
bean.sayHello();
}
}
and I deploy on tomcat server.
then I access the servlet, but the exception has thrown:
嚴重的: Allocate exception for servlet CallRemoteEJB
java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class com.kiyo.ejb.web.servlet.MyServlet with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Reflecti on.java:65)
at java.lang.Class.newInstance0(Class.java:349)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.catalina.core.StandardWrapper.loadServl et(StandardWrapper.java:1104)
at org.apache.catalina.core.StandardWrapper.allocate( StandardWrapper.java:806)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
It seems that there need some properties to specify the address of the server where the Session Bean is on, and I searched and found nothing but using InitialContext.lookup.
Can I access the remote Session Bean just using Annotation @EJB ?
Thanks very much