Avatar billede simono Nybegynder
13. december 2004 - 19:03 Der er 45 kommentarer og
1 løsning

EJB med Jboss. Der sker intet når jeg indsætter min jar fil?

Når jeg indsætter en jar fil i C:\jboss-3.2.6\server\default\deploy sker der intet. Sker heller intet med følgende jboss fil:

<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE jboss (View Source for full doctype...)>
<jboss>
  <enterprise-beans>
    <session>
        <!--  definer remote JNDI navn for TestSession -->
            <ejb-name>HelloBean</ejb-name>
 
          <jndi-name>ejb/HelloBean</jndi-name>
    </session>
  </enterprise-beans>
</jboss>
Avatar billede simono Nybegynder
13. december 2004 - 19:04 #1
altså når jeg laver en jboss.xml, som ikke i følge dokumentationen skulle være nødvendig.
Avatar billede arne_v Ekspert
13. december 2004 - 19:16 #2
Er der en ejb-jar.xml i den jar fil du deployer ?
Avatar billede arne_v Ekspert
13. december 2004 - 19:17 #3
Kan du ikke lige paste output fra

jar tvf xxxx.jar

ind her ?
Avatar billede simono Nybegynder
13. december 2004 - 19:19 #4
Hello.java:


public interface Hello extends javax.ejb.EJBObject
{
  public String hello() throws java.rmi.RemoteException;

}

HelloBean.java:

import javax.ejb.*;
abstract public class HelloBean implements javax.ejb.SessionBean
{
  private SessionContext ctx;
  public void ejbCreate()
  {System.out.println("ejbcreate");}
  public void ejbRemove()
  {System.out.println("ejbremove");}
  public void ejbActive()
  {System.out.println("ejbActive");}
  public void ejbPassivate()
  {System.out.println("ejbPassivate");}
  public void setSessionContext(javax.ejb.SessionContext ctx)
  {this.ctx=ctx;}

  public String hello()
  {
  System.out.println("hello()");
  return "Hello, World";
  }
}


HelloHome.java:


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


ejb-jar.xml:


<?xml version"1.0" encoding="UTF"-8"?>

<ejb-jar>
  <enterprise-beans>
  <session>
  <ejb-name>Hello</ejb-name>
  <home>HelloHome</home>
  <remote>Hello</remote>
  <ejb-class>HelloBean</ejb-class>
  <session-type>Stateless</session-type>
  <tansaction-type>Container</transaction-type>
  </session>
</enterprise-beans>
</ejb-jar>
Avatar billede simono Nybegynder
13. december 2004 - 19:21 #5
C:\CBD\test>jar tvf HelloWorlddd.jar
    0 Mon Dec 13 19:06:06 CET 2004 META-INF/
    68 Mon Dec 13 19:06:06 CET 2004 META-INF/MANIFEST.MF
  343 Sun Dec 12 15:15:40 CET 2004 ejb-jar.xml
  210 Mon Dec 13 18:26:28 CET 2004 Hello.class
  891 Mon Dec 13 18:26:34 CET 2004 HelloBean.class
  239 Mon Dec 13 18:26:40 CET 2004 HelloHome.class
Avatar billede simono Nybegynder
13. december 2004 - 19:23 #6
hjælper det?
Avatar billede arne_v Ekspert
13. december 2004 - 19:23 #7
ejb.jar.xml (og jboss.xml hvis du har sådan en) skal ned i META-INF
kataloget inde i jar filen
Avatar billede arne_v Ekspert
13. december 2004 - 19:24 #8
Avatar billede simono Nybegynder
13. december 2004 - 19:25 #9
ja den du har skrevet....
Avatar billede simono Nybegynder
13. december 2004 - 19:27 #10
hvordan får jeg dem der? skal jeg oprette et katalog, der hedder Meta-inf og lægge dem i det. herefter lave en jar?
Avatar billede arne_v Ekspert
13. december 2004 - 19:28 #11
Det er det simpleste bare at have et dir META-INF som man jar'er fra.
Avatar billede simono Nybegynder
13. december 2004 - 19:29 #12
C:\CBD\test>jar tvf HelloWorlddd.jar
    0 Mon Dec 13 19:06:06 CET 2004 META-INF/
    68 Mon Dec 13 19:06:06 CET 2004 META-INF/MANIFEST.MF
  343 Sun Dec 12 15:15:40 CET 2004 ejb-jar.xml
  210 Mon Dec 13 18:26:28 CET 2004 Hello.class
  891 Mon Dec 13 18:26:34 CET 2004 HelloBean.class
  239 Mon Dec 13 18:26:40 CET 2004 HelloHome.class
Avatar billede arne_v Ekspert
13. december 2004 - 19:29 #13
Hvis du bruger ant så har du mere kontrol over det:

    <target name="ejbbuild" depends="ejbcompile">
        <jar jarfile="${ejbjarname}">
            <fileset dir="${ejbbuilddir}"/>
            <metainf dir="${ejbdescripdir}"/>
        </jar>
    </target>

(hapset fra http://www.eksperten.dk/artikler/54)

Men vent med ant til du har styr på det basale EJB.
Avatar billede arne_v Ekspert
13. december 2004 - 19:30 #14
ejb-jar.xml ligger stadig forkert
Avatar billede simono Nybegynder
13. december 2004 - 19:30 #15
forkert sorry...
Avatar billede arne_v Ekspert
13. december 2004 - 19:30 #16
jar cvf HelloWorlddd.jar *.class META-INF\*.xml
Avatar billede simono Nybegynder
13. december 2004 - 19:37 #17
0 Mon Dec 13 19:29:36 CET 2004 META-INF/
68 Mon Dec 13 19:29:36 CET 2004 META-INF/MANIFEST.MF
210 Mon Dec 13 18:26:28 CET 2004 Hello.class
891 Mon Dec 13 18:26:34 CET 2004 HelloBean.class
239 Mon Dec 13 18:26:40 CET 2004 HelloHome.class
343 Sun Dec 12 15:15:40 CET 2004 META-INF/ejb-jar.xml
Avatar billede simono Nybegynder
13. december 2004 - 19:37 #18
sådan ik?
Avatar billede arne_v Ekspert
13. december 2004 - 19:38 #19
jep
Avatar billede simono Nybegynder
13. december 2004 - 19:39 #20
nu får jeg kun en fejl i min ejb-jar.xml
Avatar billede arne_v Ekspert
13. december 2004 - 19:41 #21
Hvilken fejl ?
Avatar billede simono Nybegynder
13. december 2004 - 19:48 #22
<tansaction-type>Container</transaction-type>

noget med transaction type?
Avatar billede simono Nybegynder
13. december 2004 - 19:50 #23
_2_6 date=200410140106)] Started in 39s:166ms
19:45:50,405 ERROR [XmlFileLoader] XmlFileLoader: File jar:file:/C:/jboss-3.2.6/
server/default/tmp/deploy/tmp54436HelloWorld.jar!/META-INF/ejb-jar.xml process f
atal error. Line: 9. Error message: The element type "tansaction-type" must be t
erminated by the matching end-tag "</tansaction-type>".
19:45:50,405 ERROR [XmlFileLoader] The element type "tansaction-type" must be te
rminated by the matching end-tag "</tansaction-type>".:31:9
org.xml.sax.SAXParseException: The element type "tansaction-type" must be termin
ated by the matching end-tag "</tansaction-type>".
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:293)
        at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:247)
        at org.jboss.metadata.XmlFileLoader.getDocumentFromURL(XmlFileLoader.jav
a:219)
        at org.jboss.metadata.XmlFileLoader.load(XmlFileLoader.java:137)

und so weider....
Avatar billede simono Nybegynder
13. december 2004 - 19:51 #24
<?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>Hello</ejb-name>
  <home>HelloHome</home>
  <remote>Hello</remote>
  <ejb-class>HelloBean</ejb-class>
  <session-type>Stateless</session-type>
  <tansaction-type>Container</transaction-type>
  </session>
</enterprise-beans>
</ejb-jar>
Avatar billede simono Nybegynder
13. december 2004 - 19:52 #25
ups slåfejl....
Avatar billede arne_v Ekspert
13. december 2004 - 19:52 #26
Der mangler et "r" i start tag !

<tansaction-type>Container</transaction-type>
Avatar billede simono Nybegynder
13. december 2004 - 19:53 #27
tansaction skal være lig med transaction...
Avatar billede simono Nybegynder
13. december 2004 - 19:58 #28
poster du ikke et svar arne? og mange tak for hjælpen....
Avatar billede arne_v Ekspert
13. december 2004 - 19:59 #29
kommer her
Avatar billede simono Nybegynder
13. december 2004 - 20:00 #30
siger det her dig noget...

C:\CBD\HelloBean.java:2: HelloBean is not abstract and does not override abstract method ejbActivate() in javax.ejb.SessionBean
public class HelloBean implements javax.ejb.SessionBean

hvis man implementere den abstrakt for jboss sure opstød
Avatar billede arne_v Ekspert
13. december 2004 - 20:02 #31
public void ejbActive()

skal nok være

public void ejbActivate()
Avatar billede simono Nybegynder
13. december 2004 - 20:04 #32
perfekt..

er det jave du arbejder med til daglig....?
Avatar billede arne_v Ekspert
13. december 2004 - 20:05 #33
ja bl.a.
Avatar billede simono Nybegynder
13. december 2004 - 20:15 #34
noget du sådan lige kan svare på?

C:\CBD\test>java HelloClient
Exception in thread "main" javax.naming.CommunicationException: Can't find Seria
lContextProvider
        at com.sun.enterprise.naming.SerialContext.getProvider(SerialContext.jav
a:63)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:120
)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at HelloClient.main(HelloClient.java:14)
Avatar billede simono Nybegynder
13. december 2004 - 20:17 #35
der er en der havde fortalt mig at klienten skulle compileres sammen med home og remote interfacene.... det er da ikke rigtigt vel?
Avatar billede arne_v Ekspert
13. december 2004 - 20:19 #36
Client skal have adgang til hom eog remote interfacene.

Du skal have konfigureret JNDI i client.

Du skal have jbossall-cleint.jar i classpath.
Avatar billede simono Nybegynder
13. december 2004 - 20:58 #37
kan du beskrive det nærmere?
Avatar billede arne_v Ekspert
13. december 2004 - 20:59 #38
Det midterste er for JBoss:

        System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
        System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces");
        System.setProperty("java.naming.provider.url", "localhost:1099");

(kan også laves i kommando linien med -D eller via jndi.properties)
Avatar billede simono Nybegynder
13. december 2004 - 21:00 #39
Jeg havde jbossall-cleint.jar i classpath.
jeg javac HelloClient.java i samme mappe, hvor home og remote interfacene er at servercomponenten.

hvad mener du med JNDI konfigurer i client?
Avatar billede arne_v Ekspert
13. december 2004 - 21:00 #40
De to andre betyder bare at en jar fil med remote og home interface plus
jbossall-client.jar skal være i classpath for client
Avatar billede simono Nybegynder
13. december 2004 - 21:02 #41
?
jeg er desværre blank....
Avatar billede simono Nybegynder
13. december 2004 - 21:03 #42
hvordan bruger jeg de der System.setProb....?
Avatar billede arne_v Ekspert
13. december 2004 - 21:05 #43
Se eksemplet i min artikel
Avatar billede simono Nybegynder
13. december 2004 - 21:09 #44
C:\CBD\class>java HelloClient
Exception in thread "main" javax.naming.NameNotFoundException: HelloHome not bou
nd
Avatar billede arne_v Ekspert
13. december 2004 - 21:14 #45
forkert JNDI navn i lookup !
Avatar billede simono Nybegynder
20. december 2004 - 11:16 #46
du skal lige have nogen point arne_v
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