ejb@glassfish.java.net

Re: war not see ejb jar...

From: Baptiste MATHUS <ml_at_batmat.net>
Date: Wed, 1 Oct 2008 21:59:49 +0200

Well, it's actually quite simple from my recent experience (I only tested
with many interdependent ejb modules though).

Manually, it's something like this.
1/ Create a directory that will contain all your ear data.
2/ Put for example all your modules at the root (your many wars and your ejb
jar inside a directory)
3/ Create a META-INF directory and put an application.xml inside containing
something like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE
Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
<application id="mon appli">
  <display-name>Whatever name you want</display-name>

  <module>
    <ejb>youEjbJar.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>yourFirstWar.war</web-uri>
      <context-root>war1</context-root>
    <web>
  </module>
  <module>
    <web>
      <web-uri>yourSecondWar.war</web-uri>
      <context-root>war2</context-root>
    <web>
  </module>
  <!-- in the lib dir, you can just put every possible libraries you might
need in common for the modules. -->
  <library-directory>lib</library-directory>
</application>

Note that the reference to the DTD I put will help you if you use a modern
IDE: you'll have autocompletion and documentation when just entering < (in
eclipse. <ad>I wrote a small recap about useful dtd/xsd on my blog, french,
sorry:
http://batmat.net/blog/post/2008/06/24/Quelques-declarations-XSD-ou-DTD-de-formats-XML-connus
</ad>).
HTH.

Cheers.

2008/10/1 Martin Renaud <pm.renaud_at_gmail.com>

> It could be great!!!
> but the real big question is HOW?? The only way I have be able to make ejb
> module used by ONE war file is by adding the ejb-jar package into the war
> package... and of course the same ejb-jar package deployed on the glassfish
> server!
>
> mart.
>
>
> On Wed, Oct 1, 2008 at 1:56 PM, Baptiste MATHUS <ml_at_batmat.net> wrote:
>
>> Eumm, I think this is already possible. One possible way is to deploy an
>> ear containing the corresponding modules. Say a ejb module that'd be used by
>> the two war ones.
>>
>> I guess deploying them separately (outside an ear) could also work, but I
>> didn't tested it. But then you would have to watch out the order in which
>> you're deploying your artifacts.
>>
>> Cheers.
>>
>> 2008/10/1 Martin Renaud <pm.renaud_at_gmail.com>
>>
>> And would it possible to NOT include the ejb jar into the war package. But
>>> only get a reference to that ejb jar... to allow multiple war to invoke the
>>> same ejb jar? and not include the same ejb jar into each package of war?
>>>
>>> thks
>>>
>>> Martin
>>>
>>>
>>> On Wed, Oct 1, 2008 at 1:05 PM, Eve Pokua <gorgeous65_at_msn.com> wrote:
>>>
>>>>
>>>>
>>>> Kenneth,
>>>>
>>>> Great to know. Does this also mean that EB would be package within
>>>> Application client
>>>> as well as Web packages?
>>>>
>>>> eve
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>>
>>>> Date: Wed, 1 Oct 2008 12:08:42 -0400
>>>> From: Kenneth.Saks_at_Sun.COM
>>>> To: ejb_at_glassfish.dev.java.net
>>>> Subject: Re: war not see ejb jar...
>>>>
>>>>
>>>>
>>>> On Sep 30, 2008, at 2:05 PM, Martin Renaud wrote:
>>>>
>>>> Hi,
>>>>
>>>> i really don't understand what you mean. I've separated the client
>>>> (.war) and ejbs (ejb .jar). Java EE seems to be very tricky...
>>>>
>>>>
>>>> Yes, many people feel that way about the the requirement that EJB
>>>> components be packaged in their own ejb-jar. We're fixing it
>>>> in EJB 3.1 so that enterprise beans can be packaged directly in a .war.
>>>>
>>>>
>>>>
>>>>
>>>> an example would be appreate. I joined a zip file which contain the
>>>> exercice. This project have been created whit MyEclipse.You're going to find
>>>> 3 directories: BeanProject which englobe the Web and the EJB. BeanProjectWeb
>>>> include JSP/servlet/etc and BeanProjectEJB include ejb objects. Both are
>>>> deployed to a Glassfish server. In debug mode, only directories are deployed
>>>> (directory BeanProjectWeb.war and directory BeanProjectEJB.jar (these are
>>>> not file)). I whish to not create a .ear file. Because eventually, other
>>>> .war files are going to use that BeanProjectEJB.jar file.
>>>>
>>>>
>>>> I don't know the details of the support for expanded directory
>>>> deployment. If that's the root of your problem I would suggest posting to
>>>> the glassfish forum :
>>>> http://forums.java.net/jive/forum.jspa?forumID=56&start=0.
>>>>
>>>>
>>>>
>>>> thank.
>>>>
>>>> Martin Renaud
>>>>
>>>>
>>>>
>>>> On Tue, Sep 30, 2008 at 1:40 PM, Kenneth Saks <Kenneth.Saks_at_sun.com>wrote:
>>>>
>>>> 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
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Martin Renaud
>>>>
>>>> <BeanProject.zip>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: ejb-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: ejb-help_at_glassfish.dev.java.net
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> Try Facebook in Windows Live Messenger! Try it Now!<http://clk.atdmt.com/UKM/go/111354030/direct/01/>
>>>>
>>>
>>>
>>>
>>> --
>>> Martin Renaud
>>>
>>>
>>
>>
>> --
>> Baptiste <Batmat> MATHUS - http://batmat.net
>> Sauvez un arbre,
>> Mangez un castor !
>>
>
>
>
> --
> Martin Renaud
>
>


-- 
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor !