Ciao a tutti.
Sto cercando di imparare gli Enterprise Java Bean.
Ho deployato un'applicazione con un ejb su Bea Weblogic. L'applicazione è composta dai seguenti file:

Adder.java
codice:
package it.ejb.session;

import java.rmi.RemoteException;

import javax.ejb.EJBLocalObject;


public interface Adder extends EJBLocalObject {
	
	public int add(int a, int b );
	
}
AdderHome.java
codice:
package it.ejb.session;

import java.rmi.RemoteException;

import javax.ejb.*;

public interface AdderHome extends EJBLocalHome {
	
	Adder create() throws CreateException;

}
AdderBean.java
codice:
package it.ejb.session;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;



public class AdderBean implements SessionBean{


	
	public void ejbActivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub
		
	}
	
	public void ejbCreate(){
		
	}

	public void ejbPassivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub
		
	}

	public void ejbRemove() throws EJBException, RemoteException {
		// TODO Auto-generated method stub
		
	}

	public void setSessionContext(SessionContext arg0) throws EJBException,
			RemoteException {
		// TODO Auto-generated method stub
		
	}

	public int add ( int a, int b){
		System.out.println("from AdderBean");
		return a+b;
	}
	
	

}

ejb-jar.xml
codice:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar id="ejb-jar_1" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1">
   <description>Example of a session bean</description>
   <display-name>Adder Bean</display-name>
   <enterprise-beans>
      <session>
         <description>Adder bean</description>
         <display-name>MyTimeBeanName</display-name>
         <ejb-name>AdderBean</ejb-name>
         <local-home>it.ejb.session.AdderHome</local-home>
         <local>it.ejb.session.Adder</local>
         <ejb-class>it.ejb.session.AdderBean</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Bean</transaction-type>
      </session>
   </enterprise-beans>
</ejb-jar>
weblogic-ejb-jar.xml
codice:
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
    <description>EJB che fa un addizione</description>
    <weblogic-enterprise-bean>
        <ejb-name>AdderBean</ejb-name>
        <stateless-session-descriptor>
            <pool>
                <max-beans-in-free-pool>10</max-beans-in-free-pool>
            </pool>
        </stateless-session-descriptor>
        <local-jndi-name>AdderBean</local-jndi-name>
    </weblogic-enterprise-bean>
</weblogic-ejb-jar>
I due file xml si trovano all'interno della cartella META-INF del jar deployato su weblogic.
A questo punto quando provo a richiamare un Ejb da un'applcazione Java standard ho questo errore:

codice:
javax.naming.CommunicationException [Root exception is java.rmi.UnmarshalException: failed to unmarshal class weblogic.security.acl.internal.AuthenticatedUser; nested exception is: 
	java.io.StreamCorruptedException: invalid type code: 31]
	at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:74)
	at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:32)
	at weblogic.jndi.WLInitialContextFactoryDelegate.toNamingException(WLInitialContextFactoryDelegate.java:773)
	at weblogic.jndi.WLInitialContextFactoryDelegate.pushSubject(WLInitialContextFactoryDelegate.java:673)
	at weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFactoryDelegate.java:466)
	at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:373)
	at weblogic.jndi.Environment.getContext(Environment.java:307)
	at weblogic.jndi.Environment.getContext(Environment.java:277)
	at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
	at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
	at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.init(Unknown Source)
	at javax.naming.InitialContext.<init>(Unknown Source)
	at it.ejb.session.PorvaEjb.main(PorvaEjb.java:30)
Caused by: java.rmi.UnmarshalException: failed to unmarshal class weblogic.security.acl.internal.AuthenticatedUser; nested exception is: 
	java.io.StreamCorruptedException: invalid type code: 31
	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:229)
	at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:224)
	at weblogic.common.internal.RMIBootServiceImpl_1001_WLStub.authenticate(Unknown Source)
	at weblogic.security.acl.internal.Security$1.run(Security.java:185)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
	at weblogic.security.service.SecurityManager.runAs(Unknown Source)
	at weblogic.security.acl.internal.Security.authenticate(Security.java:181)
	at weblogic.jndi.WLInitialContextFactoryDelegate.authenticateRemotely(WLInitialContextFactoryDelegate.java:734)
	at weblogic.jndi.WLInitialContextFactoryDelegate.pushSubject(WLInitialContextFactoryDelegate.java:667)
	... 10 more
Caused by: java.io.StreamCorruptedException: invalid type code: 31
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:195)
	at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:565)
	at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:191)
	at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62)
	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:227)
l'applciazione client è questa:

ProvaEjb.java
codice:
package it.ejb.session;

import java.io.StreamCorruptedException;
import java.util.Hashtable;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

public class PorvaEjb {

	
	public static void main(String[] args) {
		
		InitialContext ctx = null;
		
		try {
		    Hashtable env = new Hashtable();
		    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
		    env.put(Context.PROVIDER_URL, "t3://localhost:7001");
		    env.put(Context.SECURITY_PRINCIPAL, "giuseppe");
		    env.put(Context.SECURITY_CREDENTIALS, "giuseppe");
		    
		    
		    //ctx = new InitialContext();
		    //ctx.
		    
		    ctx = new InitialContext(env);

		}catch (NamingException e) {
		    e.printStackTrace();
		}
		
		
		try {
		    Object obj = ctx.lookup("AdderBean");
		    
			if ( obj != null ){
				AdderHome home = (AdderHome)PortableRemoteObject.narrow(obj, AdderHome.class);
				Adder adder = home.create();
				System.out.println(adder.add(2, 5));
			}
			
		    
		}catch (Exception e) {
		    e.printStackTrace();
		}
		
		
		
		
	}
	
}
sapreste dirmi qual'è il problema?
grazie, ciao