Foros del Web » Administración de Sistemas » Software para Servers »

Duke´s Bank contra JBoss

Estas en el tema de Duke´s Bank contra JBoss en el foro de Software para Servers en Foros del Web. Hola, No soy muy habitual de este foro. Disculpas. Mi custión es que trato de desplegar el Duke´s Bank de Sun en mi JBoss 4.2.2 ...
  #1 (permalink)  
Antiguo 18/12/2008, 09:08
 
Fecha de Ingreso: mayo-2008
Ubicación: Madrid capital, España
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Duke´s Bank contra JBoss

Hola,

No soy muy habitual de este foro. Disculpas.

Mi custión es que trato de desplegar el Duke´s Bank de Sun en mi JBoss 4.2.2 GA
y tengo el problema de que no puedo llamar desde los session stateful bean a los entities. Los session implementan la interfaz home y remote y los entities las interfaces local-home y local.

Llamar a los session no hay problema, pero estos invocan a los entities y no hay manera de dar con el JNDI

Este es mi código:

Código:
public final class EJBGetter {
    public static AccountHome getAccountHome() throws NamingException {
        Context initial = getInitialContext();
        //InitialContext initial = new InitialContext();
        Object objref = initial.lookup(CodedNames.ACCOUNT_EJBHOME);
        Debug.print("AccountHome", objref);
        
        //return (AccountHome) PortableRemoteObject.narrow(objref, AccountHome.class);
        return (AccountHome)objref;
    }

    public static AccountControllerHome getAccountControllerHome()
        throws NamingException {
        Context initial = getInitialContext();
        //InitialContext initial = new InitialContext();
        Object objref = initial.lookup(CodedNames.ACCOUNT_CONTROLLER_EJBHOME);
        Debug.print("AccountControllerHome", objref);
        
        return (AccountControllerHome) PortableRemoteObject.narrow(objref,
            AccountControllerHome.class);
    }

    public static CustomerHome getCustomerHome() throws NamingException {
        Context initial = getInitialContext();
        //InitialContext initial = new InitialContext();
        Object objref = initial.lookup(CodedNames.CUSTOMER_EJBHOME);
        Debug.print("CustomerHome", objref);

        //return (CustomerHome) PortableRemoteObject.narrow(objref, CustomerHome.class);
        return (CustomerHome)objref;
    }

    public static CustomerControllerHome getCustomerControllerHome()
        throws NamingException {
        Context initial = getInitialContext();
        //InitialContext initial = new InitialContext();
        Object objref = initial.lookup(CodedNames.CUSTOMER_CONTROLLER_EJBHOME);
        Debug.print("CustomerControllerHome", objref);

        return (CustomerControllerHome) PortableRemoteObject.narrow(objref,
            CustomerControllerHome.class);
    }

    public static TxHome getTxHome() throws NamingException {
        Context initial = getInitialContext();
        //InitialContext initial = new InitialContext();
        Object objref = initial.lookup(CodedNames.TX_EJBHOME);
        Debug.print("TxHome", objref);

        //return (TxHome) PortableRemoteObject.narrow(objref, TxHome.class);
        return (TxHome)objref;
    }

    public static TxControllerHome getTxControllerHome()
        throws NamingException {
        Context initial = getInitialContext();
        //InitialContext initial = new InitialContext();
        Object objref = initial.lookup(CodedNames.TX_CONTROLLER_EJBHOME);
        Debug.print("TxControolerHome", objref);

        return (TxControllerHome) PortableRemoteObject.narrow(objref,
            TxControllerHome.class);
    }
    
    private static Context getInitialContext(){
    	Context ctx = null;

    	Properties env = new Properties();
    	env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    	env.put(Context.PROVIDER_URL, "localhost:1099");
    	env.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
    	env.put("j2ee.clientName", "bank-client");
		
    	try {
			// Get an initial context
			ctx = new InitialContext(env);
			System.out.println("Got context");
		} catch (NamingException ne) {
			// TODO Auto-generated catch block
			System.out.println("Did not get context");
			ne.printStackTrace();
		}
		
		return ctx;
    }
}
Esta es una clase de utilidad para llamar a los EJBs. Los codigos de los nombres de los EJBs está en otra clase de utilidad:

Código:
public interface CodedNames {
    public static final String BANK_DATABASE = "java:/DefaultDS";
    public static final String ACCOUNT_EJBHOME = "AccountEJB";
    public static final String ACCOUNT_CONTROLLER_EJBHOME = "AccountControllerEJB";
    public static final String CUSTOMER_EJBHOME = "CustomerEJB";
    public static final String CUSTOMER_CONTROLLER_EJBHOME = "CustomerControllerEJB";
    public static final String TX_EJBHOME = "TxEJB";
    public static final String TX_CONTROLLER_EJBHOME = "TxControllerEJB";
}
De esta lista de codigos accedo a la base de datos y a los *controller*, pero estos, que son los session, llaman a los entities que son los restantes y JBoss me da EJBException porque no puede crear los entities

Estos son mis descriptores:

jboss-client.xml.-

Código:
<jboss-client>
   <jndi-name>bank-client</jndi-name>
   <ejb-ref>
      <ejb-ref-name>ejb/AccountControllerEJB</ejb-ref-name>
      <jndi-name>accountController</jndi-name>
   </ejb-ref>
   
   <ejb-ref>
      <ejb-ref-name>ejb/CustomerControllerEJB</ejb-ref-name>
      <jndi-name>customerController</jndi-name>
   </ejb-ref>
   
   <ejb-ref>
      <ejb-ref-name>ejb/TxControllerEJB</ejb-ref-name>
      <jndi-name>txController</jndi-name>
   </ejb-ref>
</jboss-client>
application-client.xml.-

Código:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE application-client PUBLIC 
          '-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.3//EN' 
          'http://java.sun.com/dtd/application-client_1_3.dtd'>
<application-client>
    <display-name>BankAdmin</display-name>
    <ejb-ref>
        <ejb-ref-name>ejb/CustomerControllerEJB</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.ebank.ejb.customer.CustomerControllerHome</home>
        <remote>com.sun.ebank.ejb.customer.CustomerController</remote>
    </ejb-ref>
    
    <ejb-ref>
        <ejb-ref-name>ejb/AccountControllerEJB</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.ebank.ejb.account.AccountControllerHome</home>
        <remote>com.sun.ebank.ejb.account.AccountController</remote>
    </ejb-ref>
    
    <ejb-ref>
        <ejb-ref-name>ejb/TxControllerEJB</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>com.sun.ebank.ejb.tx.TxControllerHome</home>
      	<remote>com.sun.ebank.ejb.tx.TxController</remote>
    </ejb-ref>
</application-client>
No os incluyo el ejb-jar.xml por motivos de espacio pero lo paso en otro post. Si podeis ayudarme os estaría muy agradecido.

Un saludo,
pepeADL
  #2 (permalink)  
Antiguo 18/12/2008, 09:12
 
Fecha de Ingreso: mayo-2008
Ubicación: Madrid capital, España
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Duke´s Bank contra JBoss

Este es el ejb-jar.xml, lo divido en dos partes.-

Código:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" version="2.1" 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">
<display-name>DukesBankEJBJAR</display-name>
<enterprise-beans>
	<entity>
      <ejb-name>AccountEJB</ejb-name>
      <local-home>com.sun.ebank.ejb.account.AccountHome</local-home>
      <local>com.sun.ebank.ejb.account.Account</local>
      <ejb-class>com.sun.ebank.ejb.account.AccountBean</ejb-class>
      <abstract-schema-name>AccountEJB</abstract-schema-name>
      <persistence-type>Bean</persistence-type>
      <prim-key-class>java.lang.String</prim-key-class>
      <reentrant>false</reentrant>
      <resource-ref>
      <res-ref-name>jdbc/DefaultDS</res-ref-name>
      <res-type>javax.sql.Datasource</res-type>
      <res-auth>Container</res-auth>
	  </resource-ref>
    </entity>
    <entity>
      <ejb-name>CustomerEJB</ejb-name>
      <local-home>com.sun.ebank.ejb.customer.CustomerHome</local-home>
      <local>com.sun.ebank.ejb.customer.Customer</local>
      <ejb-class>com.sun.ebank.ejb.customer.CustomerBean</ejb-class>
      <abstract-schema-name>CustomerEJB</abstract-schema-name>
      <persistence-type>Bean</persistence-type>
      <prim-key-class>java.lang.String</prim-key-class>
      <reentrant>false</reentrant>
      <resource-ref>
      <res-ref-name>jdbc/DefaultDS</res-ref-name>
      <res-type>javax.sql.Datasource</res-type>
      <res-auth>Container</res-auth>
	  </resource-ref>
    </entity>
    <entity>
      <ejb-name>TxEJB</ejb-name>
      <local-home>com.sun.ebank.ejb.tx.TxHome</local-home>
      <local>com.sun.ebank.ejb.tx.Tx</local>
      <ejb-class>com.sun.ebank.ejb.tx.TxBean</ejb-class>
      <abstract-schema-name>TxEJB</abstract-schema-name>
      <persistence-type>Bean</persistence-type>
      <prim-key-class>java.lang.String</prim-key-class>
      <reentrant>false</reentrant>
      <resource-ref>
      <res-ref-name>jdbc/DefaultDS</res-ref-name>
      <res-type>javax.sql.Datasource</res-type>
      <res-auth>Container</res-auth>
	  </resource-ref>
    </entity>
    <session>
      <ejb-name>AccountControllerEJB</ejb-name>
      <home>com.sun.ebank.ejb.account.AccountControllerHome</home>
      <remote>com.sun.ebank.ejb.account.AccountController</remote>
      <ejb-class>com.sun.ebank.ejb.account.AccountControllerBean</ejb-class>
      <session-type>Stateful</session-type>
      <transaction-type>Bean</transaction-type>
      <ejb-local-ref>
      <ejb-ref-name>AccountEJB</ejb-ref-name>
      <ejb-ref-type>Entity</ejb-ref-type>
      <local-home>com.sun.ebank.ejb.account.AccountHome</local-home>
      <local>com.sun.ebank.ejb.account.Account</local>
      <ejb-link>AccountEJB</ejb-link>
      </ejb-local-ref>
      <ejb-local-ref>
      <ejb-ref-name>CustomerEJB</ejb-ref-name>
      <ejb-ref-type>Entity</ejb-ref-type>
      <local-home>com.sun.ebank.ejb.customer.CustomerHome</local-home>
      <local>com.sun.ebank.ejb.customer.Customer</local>
      <ejb-link>CustomerEJB</ejb-link>
      </ejb-local-ref>
    </session>
    <session>
      <ejb-name>CustomerControllerEJB</ejb-name>
      <home>com.sun.ebank.ejb.customer.CustomerControllerHome</home>
      <remote>com.sun.ebank.ejb.customer.CustomerController</remote>
      <ejb-class>com.sun.ebank.ejb.customer.CustomerControllerBean</ejb-class>
      <session-type>Stateful</session-type>
      <transaction-type>Bean</transaction-type>
      <ejb-local-ref>
      <ejb-ref-name>CustomerEJB</ejb-ref-name>
      <ejb-ref-type>Entity</ejb-ref-type>
      <local-home>com.sun.ebank.ejb.customer.CustomerHome</local-home>
      <local>com.sun.ebank.ejb.customer.Customer</local>
      <ejb-link>CustomerEJB</ejb-link>
      </ejb-local-ref>
    </session>
    <session>
      <ejb-name>TxControllerEJB</ejb-name>
      <home>com.sun.ebank.ejb.tx.TxControllerHome</home>
      <remote>com.sun.ebank.ejb.tx.TxController</remote>
      <ejb-class>com.sun.ebank.ejb.tx.TxControllerBean</ejb-class>
      <session-type>Stateful</session-type>
      <transaction-type>Bean</transaction-type>
      <ejb-local-ref>
      <ejb-ref-name>TxEJB</ejb-ref-name>
      <ejb-ref-type>Entity</ejb-ref-type>
      <local-home>com.sun.ebank.ejb.tx.TxHome</local-home>
      <local>com.sun.ebank.ejb.tx.Tx</local>
      <ejb-link>TxEJB</ejb-link>
      </ejb-local-ref>
      <ejb-local-ref>
      <ejb-ref-name>AccountEJB</ejb-ref-name>
      <ejb-ref-type>Entity</ejb-ref-type>
      <local-home>com.sun.ebank.ejb.account.AccountHome</local-home>
      <local>com.sun.ebank.ejb.account.Account</local>
      <ejb-link>AccountEJB</ejb-link>
      </ejb-local-ref>
    </session>
  #3 (permalink)  
Antiguo 18/12/2008, 09:13
 
Fecha de Ingreso: mayo-2008
Ubicación: Madrid capital, España
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Duke´s Bank contra JBoss

...y el resto del ejb-jar.xml.-

Código:
    <assembly-descriptor>  
     <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>getCreditLine</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>findByCustomerId</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>findByPrimaryKey</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>create</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>getDetails</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>getBalance</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>getType</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>setType</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>setDescription</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>setBalance</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>setCreditLine</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>setBeginBalance</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>AccountEJB</ejb-name>
            <method-name>setBeginBalanceTimeStamp</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>remove</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>findByLastName</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>findByPrimaryKey</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>create</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>findByAccountId</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>getDetails</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setLastName</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setFirstName</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setMiddleInitial</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setStreet</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setCity</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setState</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setZip</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setPhone</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>CustomerEJB</ejb-name>
            <method-name>setEmail</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
           <container-transaction>
         <method>
            <ejb-name>TxEJB</ejb-name>
            <method-name>remove</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>TxEJB</ejb-name>
            <method-name>findByAccountId</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>TxEJB</ejb-name>
            <method-name>findByPrimaryKey</method-name>
         </method>
         <trans-attribute>Not Supported</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>TxEJB</ejb-name>
            <method-name>create</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
         <method>
            <ejb-name>TxEJB</ejb-name>
            <method-name>getDetails</method-name>
         </method>
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
   </assembly-descriptor>
</enterprise-beans>
</ejb-jar>
  #4 (permalink)  
Antiguo 23/12/2008, 21:21
 
Fecha de Ingreso: mayo-2008
Ubicación: Madrid capital, España
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Duke´s Bank contra JBoss

Hola de nuevo,

Ya he conseguido que me funcione el cliente de desktop. En cuanto al cliente web estoy completamente perdido. Consigo logarme aunque el tema de la internacionalización no funciona (por lo menos hasta el punto donde he llegado).

El problema está en que cuando lanzo el request a la clase Dispatcher, esta procesa la petición por medio de los javabeans pero al final se me queda la ventana del navegador en blanco con un mensaje en la consola que dice:

DefinitionTag: params are not defined,

como si la clase que define los parámetros para pasarselos al template.jsp no obtiviese ningun dato.

Alguien me puede, por favor ayudar.

Gracias y un saludo,
pepeADL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:04.