Foros del Web » Programación para mayores de 30 ;) » Java »

Spring

Estas en el tema de Spring en el foro de Java en Foros del Web. Buenas mi problema es el siguiente tengo una aplicacion Web en la cual utilizo JSP, MySQL, y estoy utilizando hibernate y spring para las conexiones ...
  #1 (permalink)  
Antiguo 07/01/2008, 15:33
 
Fecha de Ingreso: febrero-2006
Mensajes: 35
Antigüedad: 18 años, 2 meses
Puntos: 0
Mensaje Spring

Buenas mi problema es el siguiente tengo una aplicacion Web en la cual utilizo JSP, MySQL, y estoy utilizando hibernate y spring para las conexiones y consultas a las distintas tablas. El problema aparece cuando yo genero las consultas, las conexiones las realizo mediante spring y el codigo java que utilizo es el siguiente.

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"spring-config.xml"});

hibernateDao = (HibernateDAO) context.getBean("hibernateDao");

hago lo que tenga que hacer con eso y luego

context.close();
context.destroy();

mi problemas es que me da un error de hava heep out of memory luego de una determinada cantidad de consultas (supongo que sera por la cantidad de veces que cargo ClassPathXmlApplicationContext ).
Si alguien sabe de algun tutorial en castellano o me puede aclarar como devo cargar o instanciar spring me sera muy util.
Gracias.
  #2 (permalink)  
Antiguo 14/01/2008, 11:12
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Spring

Hola, mira no se si te sirva de mucho, pero yo lo hago así:

Creo un xml llamdo ApplicationContext.xml

Código PHP:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans  PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!-- ===============================  Bean Factory ========================================= -->    
        <bean id="beanBO" class="ruta.de.la.clase.BeanBO" singleton="true">
        <property name="beanDAO">
        <ref local="beanDAO"/>
        </property>
        </bean>
    
       <bean id="beanDAO" class="ruta.de.la.clase.BeanDAO" singleton="true">
       <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
       </bean> 
    <!-- ========================================= Hibernate ========================================= -->
    <!-- fumixterm/siga/ -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
        <value>jdbc:mysql://<host>:<port>/<db_name></value>
        </property>
        <property name="username" value="root"></property>
        <property name="password" value=""></property>
        </bean>    
        
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="mappingResources">
        <list>
        <value>fumixterm/siga/dto/FuturasAsignacionesDTO.hbm.xml</value>
        </list>
        </property>
        <property name="hibernateProperties">
        <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
        </props>
        </property>
        
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        </bean>

</beans>
Tener en cuenta que los nombres de estos beans son genericos, tu definiras las clases que requieres para hacer las consultas a la BD, ten en cuenta que debes extender la clase HibernateDAOSupport en donde vayas a usar Hibernate.

El archivo de configuracion Spring lo defino en una clase llmada BeanFactory.java

Código PHP:
public abstract class BeanFactory {

    protected static 
ApplicationContext applicationContext;

    public static 
void init() {
        if (
applicationContext == null) {
            
applicationContext = new ClassPathXmlApplicationContext("ruta/del/xml/ApplicationContext.xml");
        }
    }

    public static 
Object getBean(String beanId) {
        
init();
        
Object o applicationContext.getBean(beanId);
        return 
o;
    }
    
    public static 
BeanBO getBeanBO(){
        return (
BeanBOgetBean("beanBO"); // asi nombraste a tu bean en el ApplicationContext.xml
        
    
}



Despues Inicializas Spring en un Listener:

Código PHP:
public class ApplicationContextListener implements ServletContextListener {

    public 
void contextDestroyed(ServletContextEvent arg0) {
        
// TODO Auto-generated method stub

    
}

    public 
void contextInitialized(ServletContextEvent event) {
        
initSpring(event.getServletContext());

    }
    
    
    private 
void initSpring(ServletContext servletContext) {

        try {
            
BeanFactory.init();
            
System.out.println("********** BeanFactory Iniciado *************");
        } catch (
Throwable e) {
            
e.printStackTrace();
            throw new 
Error("Exiten problemas al iniciar la aplicacion base, " +
                    
"verifique su archivo spring.config.location en web.xml");
        }

    } 
Obviamente este listener debe estar definido en el archivo de despliegue de web.xml


Espero te sea útil.
__________________
El principio de la sabiduría es el temor de Jehová
Visita mi Blog

Última edición por fatherjuan; 14/01/2008 a las 13:14
  #3 (permalink)  
Antiguo 25/02/2011, 04:16
 
Fecha de Ingreso: febrero-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Spring

Buenas, soy novato en esto de Spring+Hibernate, os comento mi problema por si me podeis ayudar:

* BBDD: Derby.
* HIBERNATE 3.2.3
* SPRING 2.0.4

* Tengo 3 entidades: NODE, ROOM (tiene una referencia @ManyToOne a NODE) y EQUIPMENT (tiene una referencia @ManyToOne a NODE y otra a ROOM). que están dadas de alta en el aplication contex así como las propiedades de conexión de la BBDD.

* Un DAO cuyos métodos están implementado con generics, esto es...

Código PHP:
public interface MusicDAO<extends MyEntity>
{
    
    
    public 
void create(T entity);
    public 
void delete(T entity);
    public 
void update(T entity);
    
    public List<
TreadAll(Class<TclazzEntity);
    
    public 
T readById(Serializable id, Class<TclazzEntity);
    

Donde MyEntity es un interfaz vacio que es implementado por las 3 entidades.

Mi problema está en la inserción de datos, la estoy realziando de momento desde clases de Test por lo que para cada Entidiad utilizo un método distinto.

Código PHP:

public class Create extends TestCase {

    
Logger log Logger.getLogger(Create.class);

    @
Override
    
protected void setUp() throws Exception {
        
super.setUp();

    }

    @
SuppressWarnings("unchecked")
    @
Transactional
    
public void testCreateNode() throws Exception {
        
log.debug(" --> DAO.");

        
MusicDAO<NodeEntitydao = (MusicDAO<NodeEntity>) BeanFactory.getDao();

        
log.debug(" --> DAO GENERADO.");
        
log.debug(" --> INCIO CARGA DE NODOS.");

        
String[] arrayNombreCorto = { "MADRID""MURCIA",
                
"ALICANTE""MALAGA" };
        
String[] arrayNombre = { "COM. MADRID""Reg. Murcia",
                 
"COM. VALENCIANA""ANDALUCIA" };

        for (
int index 0index arrayNombreCorto.lengthindex++) {

            
NodeEntity node = new NodeEntity();
            
node.setName(arrayNombre[index]);
            
node.setShortName(arrayNombreCorto[index]);
            
node.setCountry("SPAIN");

            
dao.create(node);
        }

        List<
NodeEntitylstNode = ((MusicDAO<NodeEntity>) BeanFactory.getDao())
                .
readAll(NodeEntity.class);

        for (
NodeEntity nodeEntity lstNode) {
            
log.debug("-->" nodeEntity.toString());
        }

    }

    @
SuppressWarnings("unchecked")
    @
Transactional
    
public void testCreateRoom() throws Exception {
        
log.debug(" --> DAO.");

        
MusicDAO<RoomEntitydao = (MusicDAO<RoomEntity>) BeanFactory.getDao();
        List<
NodeEntitylstNode = ((MusicDAO<NodeEntity>) BeanFactory.getDao())
                .
readAll(NodeEntity.class);
        
log.debug(" --> INCIO CARA DE ROOMS.");

        
String[] arrayNombreRoom = { "ROOM_1""ROOM_2""ROOM_3""ROOM_4",
                
"ROOM_5""ROOM_6""ROOM_7""ROOM_8""ROOM_9""ROOM_10",

        };

        for (
NodeEntity nodeEntity lstNode) {

            for (
String valueNombre arrayNombreRoom) {

                
RoomEntity roomEntity = new RoomEntity();
                
roomEntity.setNode(nodeEntity);
                
roomEntity.setName(nodeEntity.getName().trim() + " - "
                        
valueNombre);

                
log.debug("--> " roomEntity.toString());

                
dao.create(roomEntity);

            }
        }

    }

........ 
La inserción en NODE se realiza correctamente, pero en ROOM... falla, diciendome que la tabla no existe en BBDD, ASEGURO, JURO y PERJURO que las tablas antes de la ejecución EXISTIAN pero han desaparecido. Os adjunto las entidades:
Código PHP:

@Entity
@Table(name "NODE")
public class 
NodeEntity implements com.server.util.MyEntity{

    @
Id
    
@GeneratedValue
    
@Column(name "ID"unique trueupdatable false)
    private 
Integer id null;

    @
Column(name "SHORT_NAME"length 50unique trueupdatable true)
    private 
String shortName null;

    @
Column(name "NAME"length 50unique trueupdatable true)
    private 
String name null;

    @
Column(name "COUNTRY"length 50unique trueupdatable false)
    private 
String country null
Código PHP:

@Entity
@Table(name "ROOM")
public class 
RoomEntity implements com.server.util.MyEntity{

    @
Id
    
@GeneratedValue(strategy=GenerationType.AUTO)
    @
Column(name "ID"nullable false uniquetrue)
    private 
Integer id null;

    @
ManyToOnecascadeCascadeType.ALLtargetEntity=NodeEntity.class )
    @
JoinColumn(name "NODE_ID")
    private 
NodeEntity nodenull;
    
    @
Column(name "NAME"length 50unique truenullable falseupdatable true)    
    private 
String name null

MUCHAS GRACIAS DE ANTE MANO.
  #4 (permalink)  
Antiguo 13/12/2011, 15:27
 
Fecha de Ingreso: septiembre-2007
Ubicación: Caracas
Mensajes: 13
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Spring

Buenas tardes.

Quisiera saber si les ha ocurrido un detalle que da en las validaciones de struts usando spring.

Cuando hago uso de las validaciones de struts de la siguiente manera:


<action name="usuarioAction" class="ve.com.venezolano.cobranzas.vista.action.us uarios.UsuarioAction" method="login">
<result name="input">/jsp/inicio.jsp</result>
<result name="success">/jsp/ResultadoTest.jsp</result>
</action>


las validaciones funcionan correctamente.

Pero cuando la hago haciendo uso de los beans de spring, es decir de esta manera:

<action name="usuarioAction" class="usuarioBeansSpring" method="login">
<result name="input">/jsp/inicio.jsp</result>
<result name="success">/jsp/ResultadoTest.jsp</result>
</action>


Las validaciones no funcionan correctamente, ya que me pinta el mensaje de validación tantas veces como haga submit del formulario, haciendo que la pagina cresca. Cosa que no debe ocurrir porque el mensaje debe salir una sola vez como ocurre en el caso de arriba.

Si alguien sabe una solución a este problema se lo agradezco
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:43.