Avatar billede dennish Nybegynder
27. oktober 2005 - 13:28 Der er 24 kommentarer og
1 løsning

deployde stateless sessionBean på Jboss 4.0.3 -gerne med Ant

Hej jeg har lavet følgende HelloWorld kode:(smider lige hele koden samt XML filer )

// bean
package statelessSessionBean;
public class HelloBean implements javax.ejb.SessionBean
{
    public void ejbCreate()
    {
        System.out.println("ejbCreate()");
    }

    public void ejbRemove()
    {
        System.out.println("ejbRemove()");
    }

    public void ejbActivate()
    {
        System.out.println("ejbActivate()");
    }

    public void ejbPassivate()
    {
        System.out.println("ejbPassivate()");
    }

    public void setSessionContext(SessionContext ctx)
    {
        System.out.println("setSessionContext()");
    }
    public String hello()
    {
        System.out.println("hello()");
        return "Hello, World!";
    }
}

// Remote interface
package statelessSessionBean;
public interface Hello extends javax.ejb.EJBObject
{
    public String hello() throws java.rmi.RemoteException;
}

// Local Home interface
package statelessSessionBean;
public interface HelloLocalHome extends javax.ejb.EJBLocalHome
{
    HelloLocal create() throws javax.ejb.CreateException;
}

// Local interface
package statelessSessionBean;
public interface HelloLocal extends javax.ejb.EJBLocalObject
{

  public String hello();
}

// Remote Home interface
package statelessSessionBean;
public interface HelloHome extends javax.ejb.EJBHome
{
    Hello create() throws java.rmi.RemoteException, javax.ejb.CreateException;
}

// klienten

package statelessSessionBean;

import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;

public class HelloClient {

    public static void main(String[] args) throws Exception {
       
        Properties props = System.getProperties();
                Context ctx = new InitialContext(props);

        Object obj = ctx.lookup("HelloHome");
       
        HelloHome home = (HelloHome)
            javax.rmi.PortableRemoteObject.narrow(
                obj, HelloHome.class);       
       
        Hello hello = home.create();       
       
        System.out.println(hello.hello());

        hello.remove();
    }
}


--- XML filer:  -- !!!

-- ejb-jar.xml: --

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>

  <enterprise-beans>
      <session>
        <ejb-name>HelloWorld</ejb-name>
        <home>statelessSessionBean.HelloHome</home>
        <remote>statelessSessionBean.Hello</remote>
        <local-home>statelessSessionBean.HelloLocalHome</local-home>
        <local>statelessSessionBean.HelloLocal</local>
        <ejb-class>statelessSessionBean.HelloBean</ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
      </session>
  </enterprise-beans>


</ejb-jar>

-- jboss.xml --

<?xml version="1.0"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
    "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
  <enterprise-beans>
      <session>
        <!-- definer remote JNDI navn for TestSession -->
        <ejb-name>TestHelloWorld</ejb-name>
        <jndi-name>TestHelloWorld</jndi-name>
      </session>
      </enterprise-beans>
</jboss>

Filerne liggerne i direktoratet:

C:\source code\J2EE\sample\HelloWorld\statelessSessionBean

Deploy direktorat for Jboss er:
C:\Programmer\jboss-4.0.3\server\default\deploy

Hvordan deployder jeg min bean på Jboss ? . Vil gerne gøre det via Ant, idet jeg kommer til at lave en del flere EJB'er.
Har installeret ANT version 1.6.5 og lavet miljøvariabel til ANT.
Håber der er nogle der kan hjælpe også selv om det er et omfattende spørgsmål
Avatar billede arne_v Ekspert
27. oktober 2005 - 15:50 #1
du pakker det hele i en jar fil og kopierer den til JBoss deploy dir
Avatar billede arne_v Ekspert
27. oktober 2005 - 15:51 #2
http://www.eksperten.dk/artikler/54

"Mere komplekst eksempel"
Avatar billede dennish Nybegynder
27. oktober 2005 - 16:13 #3
arne>> har prøvet at pakke den til en jar file. Godt nok med kommandoen
jar cf Helloworld.jar * og lagt jar filen i deploy på  Jboss, men efter jeg har kopieret jar filen ind i deploy direktoratet sker der ikke noget. Skulle JBoss ikke skrive deployed ? Måske gør jeg noget forkert i mine XML filer ?

- spørgsmål. Skal klienten pakkes med i jar filen
- spørgsmål. Jeg bruger DTD, men  EJB 2.1 bruger XML schema. Skal jeg bruge et XML   
  scheme istedet for

Ved godt det er mange sprøgsmål. Derfor har jeg også lavet 100 point
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:15 #4
client skal ikke med i jar fil

DTD bør virke
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:16 #5
hvordan ligger filerne i din jar fil ?

post evt. output fra:

jar tvf Helloworld.jar
Avatar billede dennish Nybegynder
27. oktober 2005 - 16:18 #6
Forresten. Når jeg prøver at compile interfacene og klienten får jeg en fejl. F.ek.s ved javac Hello.java: package javax.ejb does not exist. Kan mit problem skyldes at jeg slet ikke referer til J2EE ?
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:21 #7
Når du compiler skal du have en jar fil med J2EE i din classpath.

Hvis du har J2EE SDK med docs så har du en convenient j2ee.jar med alt
det nødvendige.
Avatar billede dennish Nybegynder
27. oktober 2005 - 16:24 #8
output:
META-INF/
META-INF/MANIFEST.MF
ejb-jar.xml
Hello.java
HelloBean.java
HelloHome.java
HelloLocal.java
HelloLocalHome.java
jboss.xml
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:26 #9
de ligger forkert !

XML filerne skal i META-INF directory
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:26 #10
og du skal have .class filerne ikke .java filerne i jar filen

og de skal ligge undre package
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:27 #11
META-INF/
META-INF/MANIFEST.MF
META-INF/ejb-jar.xml
statelessSessionBean/Hello.class
statelessSessionBean/HelloBean.class
statelessSessionBean/HelloHome.class
statelessSessionBean/HelloLocal.class
statelessSessionBean/HelloLocalHome.class
META-INF/jboss.xml
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:29 #12
Avatar billede dennish Nybegynder
27. oktober 2005 - 16:32 #13
arne>> ok here it goes. Det er kun java filer og ikke class filer jeg har i min jar fil. 
Laver et direktorat nu som hedder META-INF og ligger mine XML filer i det direktorat.
Så skal jeg vel have hentet J2EE, laver classpath reference, compile mine filer, laver en ny jar fil og deploye den ?
Avatar billede dennish Nybegynder
27. oktober 2005 - 16:34 #14
Arne>> jo meget god artikel :-)
Avatar billede arne_v Ekspert
27. oktober 2005 - 16:36 #15
ja

og ant er glimrende til både at compile, pakke jar rigtig og deploye
Avatar billede dennish Nybegynder
27. oktober 2005 - 17:38 #16
arne>> er det rigtigt at jeg skal pege på C:\Sun\AppServer\lib\j2ee.jar ?
Avatar billede arne_v Ekspert
27. oktober 2005 - 17:39 #17
classpath ? ja !  (forudsat at j2ee.jar ligger der)
Avatar billede dennish Nybegynder
27. oktober 2005 - 21:44 #18
Har prøvet at deploye på Jboss men får følgende fejl:

Warning: The Bean Provider must specify the fully-qualified name of the Java class that implements the enterprise bean's business methods in the <ejb-class> element.
Info  : Class not found on 'statelessSessionBean.HelloBean': No ClassLoaders found for: statelessSessionBean.HelloBean
Avatar billede arne_v Ekspert
27. oktober 2005 - 21:45 #19
så er du jo kommet lidt videre - den har nu genkendt din ejb-jar.xml !
Avatar billede arne_v Ekspert
27. oktober 2005 - 21:46 #20
har du fået class filerne ned i package dir ?

hvordan ser jar tvf ud nu ?
Avatar billede dennish Nybegynder
27. oktober 2005 - 21:54 #21
Udsnit:

META-INF/
META-INF/MANIFEST.MF
Hello.class
.
.

Så nej jeg har desværre ikke fået *class filerne ned i package dir. Spørger lidt dumt, men øhh hvordan gør jeg lige det.
Det skal lige nævnes at jeg står i bibliteket
C:\source code\J2EE\sample\HelloWorld\ejb\src\statelessSessionBean

Når jeg skriver jar cf Helloworld.jar *
Avatar billede arne_v Ekspert
27. oktober 2005 - 21:57 #22
skovler

statelessSessionBean\*.class

ind i jar filen

kræver at:
  - java koden ligger i et sådan dir
  - at du står et niveau højere oppe
Avatar billede dennish Nybegynder
27. oktober 2005 - 22:16 #23
Arne>> det virker TUSINDE TAK FOR HJÆLPEN. Det var også lige før jeg gik ud og skød mig selv :-)
Avatar billede arne_v Ekspert
27. oktober 2005 - 22:19 #24
så ligger jeg et svar
Avatar billede arne_v Ekspert
27. oktober 2005 - 22:20 #25
når du bliver lidt træt af alt det trivielle så prøv og læs

http://www.eksperten.dk/artikler/52
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester