EJB 3 + eclipse Tools

51 views
Skip to first unread message

Osvaldo González

unread,
Feb 26, 2009, 9:47:55 AM2/26/09
to ju...@googlegroups.com
Estimados, estoy tratando de hacer un ejemplo de EJB3 pero no consigo
que funcione, me envia el siguiente error:


Exception in thread "main" java.lang.ClassCastException: $Proxy0
cannot be cast to estante.Libro
at Leer.main(Leer.java:20)


Me faltará algo?

Mi configuracion es la siguiente:

JBossTools-ALL-linux-gtk-3.0.0.CR2-R20090128015
eclipse-jee-ganymede-SR1-linux-gtk
jboss-4.2.3.GA-jdk6


Mis clases son:

----- Proyecto "Ejemplo" clase Leer.java

public static void main(String[] args) throws NamingException {
Properties properties = new Properties();

properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","=org.jboss.naming:org.jnp.interfaces");
properties.put("Context.PROVIDER_URL", "jnp://localhost:1099");

Context ctx = new InitialContext(properties);

Libro libro = (Libro) ctx.lookup("Libro/local");

System.out.println(libro.getSaludo());
}


----- Libro.java
package estante;

import javax.ejb.Stateless;

/**
* Session Bean implementation class Libro
*/
@Stateless
public class Libro implements LibroLocal {

/**
* Default constructor.
*/
public Libro() {
// TODO Auto-generated constructor stub
}

public String getSaludo() {
return "Hola...";
}

}

----- LibroLocal.java
package estante;
import javax.ejb.Local;

@Local
public interface LibroLocal {
String getSaludo();
}

Gracias.

--
Osvaldo González Acuña
Ingeniero Ejec. Computación e Informática

Jose Miguel Selman

unread,
Feb 26, 2009, 10:23:06 AM2/26/09
to ju...@googlegroups.com
Hola Osvaldo:
Entiendo que estas definiendo un EJB con interfaz local, lo que
quiere decir que puede ser llamado sólo desde la misma JVM (máquina
virtual). Dado que estas tratando de llamar al EJB desde el main de
una clase asumiría que lo estas haciendo desde otra JVM... ¿será eso?
Saludos,
--
Jose M. Selman
jose....@gmail.com

Ariel Alejandro Aguayo Bascu~an

unread,
Feb 26, 2009, 10:23:57 AM2/26/09
to ju...@googlegroups.com
On Thu, 26 Feb 2009, Osvaldo González wrote:

Asi a la rapida.. deberias referenciar con la interface y no con la
implementacion.

LibroLocal libro = (LibroLocal)ctx.lookup("Libro/local");
System.out.println(libro.getSaludo());
----
Ariel Aguayo B. (arag...@dcc.uchile.cl)

"Vale la pena morir por todo aquello sin lo cual no vale la pena vivir..."
Salvador Allende.

Nicolas A. Echeverria O.

unread,
Feb 26, 2009, 11:39:46 AM2/26/09
to ju...@googlegroups.com
Saludos!

No soy muy asiduo a publicar temas o hacer consultas pero tengo un problemas que se esta volviendo dolor de cabeza
resulta que estoy leyendo una planillas excel y desde donde debo rescatar unos datos y pasarlos a un txt, el problema es que necesito rescatar la fecha para cada hoja de la planilla y la fecha solo aparece en 2 de las 4 hojas, no tengo problemas con leer datos de la misma hoja, pero no se como hacer para que lea datos desde otra hoja para sacar la fecha mientras estoy trabajando.

para ello tengo la siguiente configuracion en xml, lo que esta con negro es donde le doy la hoja a leer, el problema es que no se como cambiar la hoja en tiempo de ejecucion una vez q:

    <bean id="normalizer_DCTD_regional" class="cl.dybox.normalizer.FileNormalizerImp">
        <property name="reader"  ref="reader_DCTD_regional" />
        <property name="processableFiles" ref="pFiles_normalizer_DCTD" />
        <property name="finalizer" ref="finalizer_backup_normalizer_DCTD" />           
        <property name="generator" ref="generator_normalizer_DCTD_regional" />               
        <property name="bag" ref="grouper_collection_dctd_regional" />       
    </bean>
   
    <bean id="reader_DCTD_regional" class="cl.dybox.normalizer.reader.XlsFileNormalizerReader">
        <property name="range">
            <bean class="cl.dybox.normalizer.common.CellRange">
                <constructor-arg value="d6:p23" />
            </bean>
        </property>   
        <property name="sheetIndex" value="2" />       
    </bean>

       
    <bean id="generator_normalizer_DCTD_regional"
        class="cl.dybox.common.generator.XSLFileGenerator">
        <property name="directory" value="normalizacion_sbifbci" />
        <property name="name" value="normalizacion_dctd_regional.txt" />
        <property name="prefix" value="yyyyMMdd_" />
        <property name="template" value="normalizacion/sbifbci/deudores_comerciales_TD_regional_2008.xsl" />
        <property name="marshaller" >
            <ref bean="castorMarshaller" />
        </property>
    </bean>
   
    <bean id="grouper_collection_dctd_regional" class="cl.dybox.normalizer.core.GrouperCollectionNormalizerFieldBag">
        <property name="groupers">
            <list>
                <ref bean="bag_grouper_head_DCTD_regional"/>
                <ref bean="bag_grouper_body_DCTD_regional"/>
            </list>
        </property>
    </bean>

    <bean id="bag_grouper_head_DCTD_regional" class="cl.dybox.normalizer.core.GrouperNormalizerFieldBag">
        <property name="identifier" value="head" />
        <property name="rule" ref="rule_range_head_DCTD_regional" />
        <property name="group">
            <bean class="cl.dybox.normalizer.core.TextSeparatorNormalizerGroup" >
                <property name="separator" value=" " />
            </bean>
        </property>
    </bean>
   
    <bean id="rule_range_head_DCTD_regional" class="cl.dybox.normalizer.rules.CellRangeRule">       
        <property name="range" value="D7:O7"></property>       
    </bean>
   
    <bean id="bag_grouper_body_DCTD_regional" class="cl.dybox.normalizer.core.GrouperNormalizerFieldBag">
        <property name="identifier" value="body" />
        <property name="rule" ref="rules_DCTD_regional" />
        <property name="group">
            <bean class="cl.dybox.normalizer.core.XlsNormalizerGroup" />
        </property>
    </bean>
   
    <bean id="rules_DCTD_regional" class="cl.dybox.normalizer.rules.RuleCollection">       
        <property name="rules">
            <list>
                <ref bean="rule_range_body_DCTD_regional" />                       
                <ref bean="rule_notempty_body_DCTD_regional"/>
            </list>
        </property>               
    </bean>
   
    <bean id="rule_range_body_DCTD_regional" class="cl.dybox.normalizer.rules.CellRangeRule">       
        <property name="range" value="D9:P23"></property>       
    </bean>
   
    <bean id="rule_notempty_body_DCTD_regional" class="cl.dybox.normalizer.rules.NotEmptyRule" />
   
 

Osvaldo González

unread,
Feb 26, 2009, 3:54:06 PM2/26/09
to ju...@googlegroups.com
Hola Osvaldo:
Entiendo que estas definiendo un EJB con interfaz local, lo que
quiere decir que puede ser llamado sólo desde la misma JVM (máquina
virtual). Dado que estas tratando de llamar al EJB desde el main de
una clase asumiría que lo estas haciendo desde otra JVM... ¿será eso?
Saludos,

Asi a la rapida.. deberias referenciar con la interface y no con la
implementacion.

LibroLocal libro = (LibroLocal)ctx.lookup("Libro/local");


Gracias por sus respuestas, la solución fue crear una clase Remota
como dice Jose Miguel porque estan ocupando distintas maquinas JVM (la
del EJB y la del ejemplo). El otro punto que modifique fue como dijo
Ariel, la llamada al EJB:

LibroLocal libro = (LibroLocal)ctx.lookup("Libro/remote");

Saludos.

Reply all
Reply to author
Forward
0 new messages