Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-05-2003, 20:58   #1
Fabrizio73
Member
 
Iscritto dal: Dec 2001
Città: Bari.
Messaggi: 209
Primi passi con le EJB e JBoss

Sto compiendo i primi passi con le EJB.

Come container sto adoperando JBoss 3.2.0 che a sua volta si appoggia su Tomcat 4.1.24.

Ho scritto uno Stateless Session Bean che dovrebbe semplicemente restituire la stringa "Hello World".

La Home Interface (HelloWorldHome.java):
Codice:
package helloWorldEjb;

import javax.ejb.EJBHome;
import java.rmi.RemoteException;
import javax.ejb.CreateException;

public interface HelloWorldHome extends EJBHome {
    public HelloWorld create() throws RemoteException, CreateException;
}
La Remote Interface (HelloWorld.java):
Codice:
package helloWorldEjb;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface HelloWorld extends EJBObject{
    public String hello() throws RemoteException;
}
L'implementazione del Bean (HelloWorldBean.java):
Codice:
package helloWorldEjb;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.EJBException;
import java.rmi.RemoteException;

public class HelloWorldBean implements SessionBean {
    private SessionContext ctx;
    
    public void ejbActivate() throws EJBException, RemoteException {
        System.out.println("HelloWorldBean: ejbActivate()");
    }
    
    public void ejbPassivate() throws EJBException, RemoteException {
        System.out.println("HelloWorldBean: ejbPassivate()");
    }
    
    public void ejbRemove() throws EJBException, RemoteException {
        System.out.println("HelloWorldBean: ejbRemove()");
    }
    
    public void ejbCreate() {
        System.out.println("HelloWorldBean: ejbCreate()");
    }
    
    public void setSessionContext(SessionContext sessionContext) throws EJBException, RemoteException {
        ctx = sessionContext;
    }
    
    public String hello() {
        System.out.println("HelloWorldBean: hello()");
        return "Hello World";
    }
}
Il Deployment Descriptor (ejb-jar.xml):
Codice:
<?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>
    <description>JBoss Stateless Session Bean Test</description>
    <display-name>Hello World EJB</display-name>
    <enterprise-beans>
        <session>
            <ejb-name>HelloWorld</ejb-name>
            <home>helloWorldEjb.HelloWorldHome</home>
            <remote>helloWorldEjb.HelloWorld</remote>
            <ejb-class>helloWorldEjb.HelloWorldBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Bean</transaction-type>
        </session>
    </enterprise-beans>
</ejb-jar>
Le tre classi vengono compilate correttamente da Forte for Java 4 CE.

Ho quindi creato l'archivio helloWorld.jar contenente le tre classi compilate e la directory META-INF contenente il Deployment Descriptor (ejb-jar.xml).

Fatto questo, ho copiato il helloWorld.jar nella directory C:\Appl\jboss-tomcat\server\default\deploy, dopo aver avviato JBoss.

Il deployment è avvenuto correttamente, come segnalato da JBoss.

A questo punto ho scritto il client (HelloWorldClient.java):
Codice:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import helloWorldEjb.HelloWorldHome;
import javax.rmi.PortableRemoteObject;
import helloWorldEjb.HelloWorld;

public class HelloWorldClient {
    public static void main(String[] args) {
        Hashtable env = new Hashtable();
        
        env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        env.put(Context.PROVIDER_URL, "localhost:1099");
        env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
        
        try {
            Context ctx = new InitialContext(env);
            
            Object obj = ctx.lookup("HelloWorld");
            HelloWorldHome home = (HelloWorldHome)PortableRemoteObject.narrow(obj, HelloWorldHome.class);
            HelloWorld helloWorld = home.create();
            
            System.out.println(helloWorld.hello());
            helloWorld.remove();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Eccezione: " + e.getMessage());
        }
    }
}
Prima di avviare il client ho inserito nel class-path i seguenti JAR:
- j2ee.jar
- jboss-common-client.jar
- jboss-client.jar
- jboss-system-client.jar
- jbosssx-client.jar
- jnp-client.jar
- log4j.jar
- helloWorld.jar

All'atto dell'esecuzione del client però, si verifica la seguente eccezione:
Codice:
java.lang.NoClassDefFoundError: Lorg/jboss/tm/TransactionPropagationContextFactory;
        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:1494)
        at java.lang.Class.getField0(Class.java:1727)
        at java.lang.Class.getDeclaredField(Class.java:1189)
        at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1430)
        at java.io.ObjectStreamClass.access$400(ObjectStreamClass.java:45)
        at java.io.ObjectStreamClass$3.run(ObjectStreamClass.java:331)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:329)
        at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:249)
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:449)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1521)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
        at java.util.HashMap.readObject(HashMap.java:986)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:824)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
        at org.jboss.proxy.ClientContainer.readExternal(ClientContainer.java:109)
        at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1686)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1644)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
        at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
        at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:30)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:514)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:471)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at HelloWorldClient.main(HelloWorldClient.java:29)
Exception in thread "main"
Dov'è il problema?
Cosa ho sbagliato?

Infinite grazie a chiunque possa aiutarmi!
__________________
Se il giudice fosse giusto, forse il criminale non sarebbe colpevole - Dostoevskij
Fabrizio73 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2003, 21:30   #2
Fabrizio73
Member
 
Iscritto dal: Dec 2001
Città: Bari.
Messaggi: 209
Ok... ho risolto da me!

Per chi fosse interessato: il problema è nel class-path del client, invece di includere tutti quei files, basta includere jbossall-client.jar
__________________
Se il giudice fosse giusto, forse il criminale non sarebbe colpevole - Dostoevskij
Fabrizio73 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 09:10   #3
dr.stein
Registered User
 
Iscritto dal: Dec 2001
Messaggi: 890
tutto questo per un'hello world ?!?!?!?
dr.stein è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 12:30   #4
Fabrizio73
Member
 
Iscritto dal: Dec 2001
Città: Bari.
Messaggi: 209
Già ...
__________________
Se il giudice fosse giusto, forse il criminale non sarebbe colpevole - Dostoevskij
Fabrizio73 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 18:59   #5
Passy
Senior Member
 
L'Avatar di Passy
 
Iscritto dal: Jul 2000
Città: Vignola (MO)
Messaggi: 316
Quote:
Originally posted by "Fabrizio73"

Già ...
Cosa hai fatto per risolvere il problema???

Ciao
__________________
<Asus A8N-E Deluxe> <Amd64 3000+> <Ram 2.5 Gb> <Geffo3> <2 Maxtor 160 Gb RAID 1> <Adsl ZyXEL 645r> <ESS Maestro>
<GNU/Linux Debian Etch>
Wii 1037 4238 6261 1967
Passy è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2003, 13:34   #6
Fabrizio73
Member
 
Iscritto dal: Dec 2001
Città: Bari.
Messaggi: 209
Per l'esecuzione del client basta inserire nel class-path jbossall-client.jar.
__________________
Se il giudice fosse giusto, forse il criminale non sarebbe colpevole - Dostoevskij
Fabrizio73 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v