ejb@glassfish.java.net

Re: war not see ejb jar...

From: Kenneth Saks <Kenneth.Saks_at_Sun.COM>
Date: Tue, 30 Sep 2008 13:40:21 -0400

Hi Martin,

There are two typical ways this is done. The first is simply to
repackage the interface within the .war. The second is to refactor
the EJB client view classes and put them in a .jar file that is placed
within a directory named "lib" at the top-level of the .ear.
Any .jars in that directory are required to be visible to all modules
in the .ear.


On Sep 30, 2008, at 1:34 PM, Martin Renaud wrote:

> Hi Experts,
>
> I've created a bean project which use a JSP/Servlet client and EJB
> objects (sessionBean). Both are on the same server. From them, i've
> deployed on the server a war and a ejb-jar... but i'm having a
> problem. The war file seems unable to see the ejb-jar once deployed.
> In fact the only way to get ejb-jar visible from the war is to add
> it into the classpath of the war file. But i didn't see any example
> or tutorial who talk about adding the ejb-jar into the classpath of
> the war.
> I'm using annotation according to this example: https://glassfish.dev.java.net/javaee5/ejb/examples/Sful.html
> .
>
> I'm using MyEclipse 6.x and a Glassfish 2.x server.
>
>
> ClientSessionRemote.java
> Code:
>
> package com.imagem;
>
> import javax.ejb.Remote;
>
> @Remote
> public interface ClientSessionRemote {
>
> public java.lang.String SayHello();
>
> }
>
>
> ClientSession.java
> Code:
>
> package com.imagem;
>
> import javax.ejb.Stateful;
>
> @Stateful
> public class ClientSession implements ClientSessionRemote {
>
> public String SayHello(){
> String msg="Hello! I am Session Bean";
> System.out.println(msg);
> return msg;
> }
>
> }
>
>
> Controller.java (servlet)
> Code:
>
> public class Controller extends HttpServlet {
>
> @EJB
> private ClientSessionRemote m_testClientSessionBean;
>
> ...some code...
>
> public void doGet(HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException {
>
> PrintWriter out;
> response.setContentType("text/html");
> String title = "EJB Example";
> out = response.getWriter();
>
> out.println("<html>");
> out.println("<head>");
> out.println("<title>Hello World Servlet!</title>");
> out.println("</head>");
> out.println("<body>");
> out.println("<p align=\"center\"><font size=\"4\" color=
> \"#000080\">Servlet Calling Session Bean</font></p>");
>
> try{
>
> //ClientSessionRemote client = (ClientSessionRemote) new
> InitialContext().lookup("java:comp/env/StatefulClientSession");
> //ClientSessionRemote client = (ClientSessionRemote) new
> InitialContext().lookup(ClientSessionRemote.class.getName());
>
> //out.println("<p align=\"center\"> Message from Session
> Bean is: <b>" + client.SayHello() + "</b></p>");
> //System.out.println("Message = " + client.SayHello());
>
> out.println("<p align=\"center\"> Message from Session Bean
> is: <b>" + m_testClientSessionBean.SayHello() + "</b></p>");
> }
> catch(Exception CreateException){
> CreateException.printStackTrace();
> }
>
> out.println("<p align=\"center\"><a href=
> \"javascript:history.back()\">Go to Home</a></p>");
> out.println("</body>");
> out.println("</html>");
> out.close();
>
>
>
>
> }
>
> ...some code...
>
> }
>
>
> What else do i need to do?? any help would be appreciate!!!
>
> thks
>
> Martin Renaud
>