/ / Dependency Injection fonctionne au démarrage de l’application Mule. Les objets deviennent nuls, lorsqu'une demande est reçue et qu'ils échouent en lançant NullEx - ressort, hibernation, mule, mule-module-jpa

Dependency Injection fonctionne au démarrage de l'application Mule. Les objets deviennent nuls, lorsqu'une demande est reçue et qu'ils échouent en lançant NullEx - printemps, hibernation, mule, mule-module-jpa

 <?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<context:component-scan base-package="com.example.hibernate" />

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/emp" />
<property name="username" value="root" />
<property name="password" value="admin" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" autowire = "byname">
<property name="dataSource" ref="myDataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.connection.pool_size">20</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>Departments.hbm.xml</value>
</list>
</property>
</bean>
<bean id ="employeeDAO" class = "com.example.hibernate.dao.EmployeeDAOImpl" autowire = "byname"/>
</beans>

Et voici Mflow

<?xml version="1.0" encoding="utf-8"?>

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json"
xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper"
xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking"
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:context="http://www.springframework.org/schema/context"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<spring:beans>
<spring:import resource="DBConfigurations.xml" />
</spring:beans>

<data-mapper:config name="getEmployeeDetailsReq"
transformationGraphPath="getEmployeeDetailsReq.grf" doc:name="getEmployeeDetailsReq" />
<data-mapper:config name="getEmployeeDetailsResponse" transformationGraphPath="getEmployeeDetailsResponse.grf" doc:name="getEmployeeDetailsResponse"/>

<flow name="EmployeeDetailsFlow" doc:name="EmployeeDetailsFlow">
<http:inbound-endpoint exchange-pattern="request-response"
address="http://localhost:9090/getEmployeeDetails" doc:name="Receive" />
<object-to-string-transformer doc:name="Object to String" />
<data-mapper:transform config-ref="getEmployeeDetailsReq"
doc:name="getEmployeeDetailsReq" />
<component doc:name="GetTemplateInfo"
class="com.example.hibernate.dao.GetEmployeeDetails" />
<data-mapper:transform config-ref="getEmployeeDetailsResponse" returnClass="java.lang.String" doc:name="getEmployeeDetailsResponse"/>
<json:object-to-json-transformer
doc:name="Object to JSON" />
</flow>

</mule>

Voici mon composant Java

package com.example.hibernate.dao;

import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import com.example.hibernate.Employee;

public class GetEmployeeDetails  implements Callable{

@Autowired
@Qualifier("employeeDAO")
private EmployeeDAO dao;
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
Employee emp = (Employee)eventContext.getMessage().getPayload();
return dao.getEmployeeDetailsById(emp.getId());
}

}

J'ai essayé d'injecter un objet en utilisant autowire etégalement en utilisant l'injection de printemps setter. Dans les deux scénarios, en ajoutant Syso dans la méthode de construction et de réglage, j'ai remarqué que l'objet était injecté au moment du démarrage de l'application. Les systèmes s’impriment dans la console.

Lorsque j'envoie une demande, l'objet devient nul et échoue en lançant une exception NullPointerException.
Même la même chose ne fonctionne pas dans les classes de service.

Quelqu'un peut m'aider?

Merci d'avance.

Réponses:

0 pour la réponse № 1

Ça vous dérange d'essayer ce qui suit?

Ajouter ceci à DBConfiguration.xml:

<bean id="getEmployeeDetails"
class="com.example.hibernate.dao.GetEmployeeDetails" />

Et changez le flux en:

<component>
<spring-object bean="getEmployeeDetails"/>
</component>