Newsgroup: it.comp.java
Titolo: utilizzare metodi ejb in una servlet

sto cercando di creare i miei primissimi ejb da utilizzare in alcune mie 
servlet. ho provato a seguire un tutorial on-line. apparentemente sembra 
che il mio ejb sia stato deployato correttamente da jboss, e questo è il 
log che mi viene mostrato:
16:53:36,944 INFO  [EjbModule] Deploying Hello
16:53:37,214 INFO  [ProxyFactory] Bound EJB Home 'Hello' to jndi 'Hello'
16:53:37,220 INFO  [EJBDeployer] Deployed: 
file:/Applications/
jboss-4.0.5.GA/server/default/deploy/helloserver.jar
i problemi iniziano quando voglio utilizzare dalla mia servlet i metodi 
esposti dall'ejb, di cui riporto il codice:
---------------------------------------
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.naming.*;
import javax.rmi.*;
import javax.ejb.*;
public class test extends HttpServlet{
 
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
	}
 
	public void service( HttpServletRequest request, HttpServletResponse 
response )
		throws ServletException, IOException, java.net.MalformedURLException{
 
		PrintWriter out = response.getWriter();
		response.setContentType("text/html; charset=UTF-8");
 
		out.write( "prova ejb<HR><BR>" );
 
		try {
 
			InitialContext jndiContext= new InitialContext();
			Object ref = jndiContext.lookup("Hello");
			HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref, 
HelloHome.class);
 
			Hello myLocal = home.create();
			//out.write( myLocal.sayHello() );
 
		} catch (Exception e) {
			out.write( e.getMessage() );
		}
 
		out.write( "<HR><BR>" );
		out.close();
 
	}
}
---------------------------------------
se provo a richiamare la servlet dal browser ottengo la seguente eccezione:
"EJBException:; nested exception is: javax.ejb.EJBException: Invalid 
invocation, check your deployment packaging, method=public abstract 
Hello HelloHome.create() throws 
javax.ejb.CreateException,java.rmi.RemoteException"
l'eccezione viene sollevata dalla chimata al metodo create() 
dell'oggetto hme. non sono ancora riuscito a risolvere il problema. per 
chiarezza riporto anche i vari file xml di corredo.
grazie mille per l'attenzione,
ciao
    Alessio
--ejb-jar.xml--
<!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>
             <transaction-type>Container</transaction-type>
         </session>
     </enterprise-beans>
</ejb-jar>
---------------
--jndi.properties--
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
-------------------

 servlet.
Non so aiutarti, non conosco quasi per niente ejb 2.0 ma, visto che stai 
partendo da zero e che stai usando jboss 4.0.5, perche' non ti butti 
sugli ejb 3.0??? sono infinitamente piu' semplici da usare e ti devi 
scervellare di meno!!!
-- 
SoulSpirit

SoulSpirit ha scritto:

è vero, hai ragione sarebbe più semplice, ma penso di imparare di più se 
all'inizio mi sbatto un po' cercando di capire come funzionano. 
all'inizio è frustrante, soprattutto perchè non so dove sbattere la 
testa e mi sento anche un po' stupido, ma spero sia un investimento per 
il futuro.
Per ora sto incontrando difficolta sull'utilizzo degli ejb nelle mie 
servlet. sugli ejb ne so ancora pochissimo, ma se non ho interpretato 
male i messaggi di jboss, dovrei essere riuscito a distribuirlo.
Grazie comunque se non riesco a risolvere i problemi vedrò di 
approcciare il problema in altro modo.
ciao
    Alessio

 il futuro.
Se e' una scelta conscia nulla da ridire, anche se non condivido il 
punto di vista.
In caso contrario, permettimi di dirti che ejb3 non e' un'estensione di 
ejb2 ma una sua evoluzione. Questo significa che per imparare ad 
utilizzare gli ejb3 e capirne a fondo i concetti sui quali e' basato non 
e' assolutamente necessario partire dagli ejb2!
E' come se un nuovo utente di computer decidesse di iniziare ad usare 
windows 3.1 anziche' windows xp in modo da farsi una cultura di base 
prima di buttarsi sul nuovo sistema operativo, non avrebbe molto senso.
-- 
SoulSpirit

 e' assolutamente necessario partire dagli ejb2!
Concordo pienamente se parliamo di Ejb Entity (anche perchè con la specifica 
3.0 non esistono più, di fatto),
però secondo me i concetti che stanno alla base di Ejb 2.0 andrebbero, se 
non sviscerati profondamente,
almeno guardati  con un po' di attenzione.
Scorpio.