Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [Java] Deploy di un EJB

    Ciao a tutti, rinnovo la mia richiesta di aiuto:
    ho creato un file .jar
    con questo risultato:

    C:\ROOT_EJB\ENTITY_BMP>jar cvf Naked.jar C:\ROOT_EJB\ENTITY_BMP\META-INF\*.* C:\
    ROOT_EJB\ENTITY_BMP\classes\entity_bmp\*.class
    aggiunto manifesto
    aggiunta in corso di: C:/ROOT_EJB/ENTITY_BMP/META-INF/ejb-jar.xml(in = 602) (out
    = 296)(compresso 50%)
    aggiunta in corso di: C:/ROOT_EJB/ENTITY_BMP/META-INF/weblogic-ejb-jar.xml(in =
    360) (out= 223)(compresso 38%)
    aggiunta in corso di: C:/ROOT_EJB/ENTITY_BMP/classes/entity_bmp/homeCC.class(in
    = 258) (out= 197)(compresso 23%)
    aggiunta in corso di: C:/ROOT_EJB/ENTITY_BMP/classes/entity_bmp/mioBean.class(in
    = 1167) (out= 524)(compresso 55%)
    aggiunta in corso di: C:/ROOT_EJB/ENTITY_BMP/classes/entity_bmp/remotaCC.class(i
    n = 279) (out= 192)(compresso 31%)
    aggiunta in corso di: C:/ROOT_EJB/ENTITY_BMP/classes/entity_bmp/servizio_jndi.cl
    ass(in = 2221) (out= 1189)(compresso 46%)


    che come si può notare è positivo, visto che mi crea un file naked.

    Il problema è che se voglio trasformare il mio file Naked.jar in un file deployable (per esempio mioDeployable.jar) con questa istruzione:

    java weblogic.ejbc Naked.jar mioDeployable.jar

    mi dà questo errore:

    java.io.FileNotFoundException: META-INF/ejb-jar.xml not found in jar file
    at weblogic.ejb20.dd.xml.DDUtils.getEntry(DDUtils.jav a:208)
    at weblogic.ejb20.dd.xml.DDUtils.getEjbJarXml(DDUtils .java:112)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:6
    2)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:4
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:3
    8)
    at weblogic.ejbc20.runBody(ejbc20.java:327)
    at weblogic.utils.compiler.Tool.run(Tool.java:81)
    at weblogic.ejbc.main(ejbc.java:20)
    ERROR: java.io.FileNotFoundException: META-INF/ejb-jar.xml not found in jar file


    Mi chiedo come è possibile che non sia visibile il file ejb-jar.xml
    al momento di creare il file deployable se nel passaggio pecedente è stato aggiunto al momento della creazione del file naked?

    Forse qualche errore di classpath (ma non credo)?

    Fatemi sapere al più presto che ormai non so più cosa fare.

    Grazie e ciaoooooo

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; mai controllato che nel jar il file ejb-jar.xml sia presente? Apri il file .jar con winrar o winzip; dopo di che vai in META-INF e controlla che ci sia il file suddetto; se c'è aprilo e vedi che c'è scritto.
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Ciao,ho controllato come mi hai suggerito però ci sono i 2 xml
    (ejb-jar chw weblogic-ejb-jar.xml) e dentro c'è esattamente riportato
    quanto ho scritto originariamente.

    Ciao

  4. #4
    Ciao ti riporto comunque il contenuto del mio ejb-jar:

    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"
    "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd">
    <ejb-jar>
    <enterprise-beans>
    <session>
    <ejb-name>ejBeanSession</ejb-name>
    <home>ENTITY_BMP.classes.entity_bmp.homeCC</home>
    <remote>ENTITY_BMP.classes.entity_bmp.remotaCC</remote>
    <ejb-class>ENTITY_BMP.classes.entity_bmp.mioBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>


    dove 'ENTITY_BMP.classes.entity_bmp' rappresenta il percorso fino alla classe o all'interfaccia.Solo che ho notato che prima della cartella ENTITY_BMP nel percorso originario esiste un'altar cartella
    che si chiama ROOT_EJB : forse devo provare ad aggiungere a 'ENTITY_BMP.classes.entity_bmp' la cartella 'ROOT_EJB' così da avere come path 'ROOT_EJB.ENTITY_BMP.classes.entity_bmp'.
    Adesso provo.
    Ciaoooo

  5. #5
    Ciao ho riprovato ad estrarre il jar ed effettivamente nella cartella
    META-INF non mi trovo i due file xml: però la cosa strana è che quando apro la cartella
    col nome del file jar da me creato e unzippato (la directory si chiama naked) mi trovo oltre alla cartella meta-inf
    senza i file xml anche la mia cartella principale da cui si accede a tutte le sottodirectory del mio
    progetto compresa la sottocartella META-inf in cui qui però ci sono i file xml.

    Strano mi ha praticamente creato una cartella meta-inf senza xml e poi tutta
    la struttura di directory del mio progetto compresa la directory meta-inf
    in cui ci sono i file xml.

    Potrebbe essere un errore in fase di creazione di naked a livello di definizione di path visto che utilizzo
    questa impostazione di percorso:

    jar cvf prServiceNaked.jar C:\ROOT_EJB\ENTITY_BMP\META-INF\*.* C:\ROOT_EJB\ENTITY_BMP\classes\entity_bmp\*.class


    ed effettivamente mi trovo 'C:\ROOT_EJB\ENTITY_BMP\META-INF' in cui ci sono i file xml
    però allo stesso livello di ROOT_EJB mi trovo anche META-INF senza file: al di sopra
    delle 2 cartelle ROOT_EJB e META-INF si trova la cartella di nome naked ossia la cartella
    col nome del naked che ho scompattato.

    Potrebbe essere questo il motivo?

    ciaOOOO

  6. #6
    ok , adesso non mi dà più errore sui file xml,
    poichè li trova ed ho verificato effettivamente aprendo il file jar che nella cartella
    meta-inf esistono igli xml.
    Però adesso i dà un'altro errore :

    Comando di creazione del file deployable

    C:\ROOT_EJB\ENTITY_BMP>java weblogic.ejbc Naked.jar Deployable.jar

    L'ERRORE é:
    ************************************************** ******

    weblogic.xml.process.ProcessorFactoryException: Could not locate processor for p
    ublic id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"
    at weblogic.xml.process.ProcessorFactory.getProcessor (ProcessorFactory.j
    ava:181)
    at weblogic.xml.process.ProcessorFactory.getProcessor (ProcessorFactory.j
    ava:164)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:6
    5)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:4
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:3
    8)
    at weblogic.ejbc20.runBody(ejbc20.java:327)
    at weblogic.utils.compiler.Tool.run(Tool.java:81)
    at weblogic.ejbc.main(ejbc.java:20)
    --------------- nested within: ------------------
    weblogic.xml.process.XMLProcessingException: Could not locate processor for publ
    ic id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN" - with nested exception:
    [weblogic.xml.process.ProcessorFactoryException: Could not locate processor for
    public id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"]
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:6
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:4
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:3
    8)
    at weblogic.ejbc20.runBody(ejbc20.java:327)
    at weblogic.utils.compiler.Tool.run(Tool.java:81)
    at weblogic.ejbc.main(ejbc.java:20)
    ERROR: weblogic.xml.process.XMLProcessingException: Could not locate processor f
    or public id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN" - with nested exception:
    [weblogic.xml.process.ProcessorFactoryException: Could not locate processor for
    public id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"]

    C:\ROOT_EJB\ENTITY_BMP>java weblogic.ejbc20 Naked.jar Deployable.jar
    weblogic.xml.process.ProcessorFactoryException: Could not locate processor for p
    ublic id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"
    at weblogic.xml.process.ProcessorFactory.getProcessor (ProcessorFactory.j
    ava:181)
    at weblogic.xml.process.ProcessorFactory.getProcessor (ProcessorFactory.j
    ava:164)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:6
    5)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:4
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:3
    8)
    at weblogic.ejbc20.runBody(ejbc20.java:327)
    at weblogic.utils.compiler.Tool.run(Tool.java:81)
    at weblogic.ejbc20.main(ejbc20.java:419)
    --------------- nested within: ------------------
    weblogic.xml.process.XMLProcessingException: Could not locate processor for publ
    ic id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN" - with nested exception:
    [weblogic.xml.process.ProcessorFactoryException: Could not locate processor for
    public id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"]
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:6
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:4
    7)
    at weblogic.ejb20.dd.xml.DDUtils.loadDeploymentDescri ptor(DDUtils.java:3
    8)
    at weblogic.ejbc20.runBody(ejbc20.java:327)
    at weblogic.utils.compiler.Tool.run(Tool.java:81)
    at weblogic.ejbc20.main(ejbc20.java:419)
    ERROR: weblogic.xml.process.XMLProcessingException: Could not locate processor f
    or public id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN" - with nested exception:
    [weblogic.xml.process.ProcessorFactoryException: Could not locate processor for
    public id = "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"]

    ************************************************** ******


    Ma cosa vorrà significare?

    Ciaoooo

  7. #7
    Ciao, ho risolto i problemi da me lamentati precedentemente:
    però adesso me ne rimane ancora uno e penso sia l'ultimo.

    Quando utilizzo tale istruzione:

    java weblogic.ejbc Naked.jar Deployable.jar


    per creare il file deployable, ho questo errore:

    *******************
    Exception in thread "main" java.lang.NoClassDefFoundError: classes/progettoejb/m
    ioBean (wrong name: progettoejb/mioBean)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknow n Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at weblogic.ejb20.deployer.BeanInfoImpl.loadClass(Bea nInfoImpl.java:194)

    at weblogic.ejb20.deployer.BeanInfoImpl.<init>(BeanIn foImpl.java:116)
    at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.< init>(ClientDrivenB
    eanInfoImpl.java:116)
    at weblogic.ejb20.deployer.SessionBeanInfoImpl.<init> (SessionBeanInfoImp
    l.java:47)
    at weblogic.ejb20.deployer.BeanInfoImpl.createBeanInf oImpl(BeanInfoImpl.
    java:206)
    at weblogic.ejb20.deployer.DeploymentInfoImpl.initial izeBeanInfos(Deploy
    mentInfoImpl.java:157)
    at weblogic.ejb20.deployer.DeploymentInfoImpl.<init>( DeploymentInfoImpl.
    java:86)
    at weblogic.ejb20.ejbc.EJBCompiler.setupEJB(EJBCompil er.java:106)
    at weblogic.ejbc20.runBody(ejbc20.java:346)
    at weblogic.utils.compiler.Tool.run(Tool.java:81)
    at weblogic.ejbc.main(ejbc.java:20)
    *******************

    che da quello che sembra si riferisce ad un percorso errato nel file ejb-jar.xml.

    Considerando che la struttura della mia applicazione (fatta in JBuilder) prevede:

    1) C:\ProgettoEJB\classes\progettoejb --> per la posizione delle classi

    2) C:\ProgettoEJB\META-INF --> per la posizione dei file descrittori xml

    3) C:\ProgettoEJB --> per la posizione dei file naked e deployable

    ho definito questa struttura per l'ejb-jar.xml:

    <ejb-jar>
    <enterprise-beans>
    <session>
    <ejb-name>ejBeanSession</ejb-name>
    <home>classes.progettoejb.homeCC</home>
    <remote>classes.progettoejb.remotaCC</remote>
    <ejb-class>classes.progettoejb.mioBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>


    Come puoi vedere ho definito il percorso fino alle classi/interfacce con 2 cartelle (cioè classes.progettoejb).

    Quindi mi chiedo quando mi dice nell'errore 'wrong name: progettoejb/mioBean' secondo te può dipendere dal fatto di aver
    specificato un path con 2 cartelle anzichè con una (es.: classes.progettoejb anzichè solo progettoejb) o forse sto sbagliando?

    Ciaooo

  8. #8
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao scusami se ti rispondo molto in ritardo ma sono super sommerso di lavoro.
    Cmq... mi posti il codice del tuo bean?
    Innanzitutto non mi torna una cosa... hai, nel file ejb-jar.xml che hai postato, un session bean però il bean inizia con ENTITY_BMP.classes.entity_bmp.homeCC... ora di solito ENTITY sta per un entity bean e ciò mi fa pensare che hai dichiarato un ejb di tipo entity e BMP (Bean Managed Persistence) ma lo stai usando come session bean il che può generare errori.
    Inoltre se la classe mioBean è stata scritta così:

    codice:
    package progettoejb;
    import javax.ejb.*;
    public class mioBean extends SessionBean{
    }
    be' allora nel file non devi mettere, secondo me, classes/progettoejb/mioBean ma solo progettoejb/mioBean.
    Fammi sapere ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  9. #9
    Ciao Angelo1974,questo è il codice mioBean


    ***********************************
    package progettoejb;

    import javax.ejb.*;
    import java.util.*;

    public class mioBean implements SessionBean {

    private SessionContext ctx;


    public mioBean() {}
    public void setSessionContext(SessionContext c) {
    ctx=c;
    }

    public void ejbCreate() {}
    public void ejbRemove() {}
    public void ejbPassivate() {}
    public void ejbActivate() {}


    public String getNome(String n) {
    return "il nome inserito è " + n;
    }

    public String getCognome(String c) {
    return "il cognome inserito è " + c;
    }

    }

    ***********************************


    Per quanto riguarda il file ejb-jar.xml non ho più ENTITY_BMP.classes.entity_bmp.homeCC... ,visto che ho preferito eliminare
    '_' dal percorso, quindi la struttura su cui sto lavorando è:

    1) C:\ProgettoEJB\classes\progettoejb --> per la posizione delle classi

    2) C:\ProgettoEJB\META-INF --> per la posizione dei file descrittori xml

    3) C:\ProgettoEJB --> per la posizione dei file naked e deployable


    mentre la struttura per l'ejb-jar.xml è :

    <ejb-jar>
    <enterprise-beans>
    <session>
    <ejb-name>ejBeanSession</ejb-name>
    <home>classes.progettoejb.homeCC</home>
    <remote>classes.progettoejb.remotaCC</remote>
    <ejb-class>classes.progettoejb.mioBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>


    e non più:

    <ejb-jar>
    <enterprise-beans>
    <session>
    <ejb-name>ejBeanSession</ejb-name>
    <home>ENTITY_BMP.classes.entity_bmp.homeCC</home>
    <remote>ENTITY_BMP.classes.entity_bmp.remotaCC</remote>
    <ejb-class>ENTITY_BMP.classes.entity_bmp.mioBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>



    Ho provato come mi hai suggerito ad inserire nel file ejb-jar.xml 'progettoejb.mioBean' al posto di 'classes.progettoejb.mioBean'
    visto che mioBean ha effettivamente la struttura che hai indicato nel tuo ultimo messaggio,però mi dà quest'errore:

    ERROR: Error from ejbc: Unable to load a class specified in your ejb-jar.xml: pr
    ogettoejb.mioBean
    ERROR: ejbc found errors

    Eppure il path dovrebbe essere giusto?!?!?


    Ciaoooo

  10. #10
    Ti invio anche il resto del bean:

    CODICE homeCC:

    **************************

    package progettoejb;

    import javax.ejb.*;
    import java.rmi.*;

    public interface homeCC extends EJBHome {

    public remotaCC create() throws CreateException, RemoteException;

    }

    ************************


    CODICE REmotaCC:

    ************************
    package progettoejb;

    import javax.ejb.*;
    import javax.rmi.*;


    public interface remotaCC extends EJBObject{

    public String getNome(String nome) throws RemoveException;
    public String getCognome(String cognome) throws RemoveException;



    }

    ****************************************


    Codice Client:

    ***********************************

    package progettoejb;

    import javax.naming.*;
    import java.util.Hashtable;
    import java.util.Properties;
    import java.util.Set;
    import java.util.Iterator;
    import java.io.File;
    import javax.rmi.*;

    public class servizioJndi {

    public servizioJndi(){
    super();
    }


    public static void main(String[] args) {

    InitialContext ctx = null;

    try{

    servizioJndi client = new servizioJndi();



    ctx= new InitialContext();

    ......


    ***********************************


    AriCiaooooo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.