Bonjour
J'ai une application J2EE avec un serveur JBoss et un client Swing. Le server-side va avoir besoin d'envoyer des mails avec des attachements en PDF.
J'ai donc essayé de passer par l'implémentation Spring de JavaMail (JavaMailSenderImpl).
J'ai donc défini ce bean dans un fichier applicationContext-mail.xml
Et je référence ce bean dans mon applicationContext.xml (pour le service qui va envoyer des mails)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <beans> <bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"> <value>10.0.1.2</value> </property> </bean> </beans>
Et enfin dans mon beanRefFactory.xml, je référence bien tous les appContext utilisés:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <!-- IncidentService Service Proxy with inner IncidentService Service Implementation --> <bean id="incidentService" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target"> <bean class="com.thalys.opalys.business.IncidentServiceImpl"> <property name="javaMailSenderImpl"><ref bean="javaMailSenderImpl"/></property> </bean> </property> <property name="proxyInterfaces"> <value>com.thalys.opalys.business.IncidentService</value> </property> <property name="interceptorNames"> <list> <value>hibernateInterceptor</value> </list> </property> </bean>
A la compiltion (Maven), tout se passe bien, mais au déploiement, j'ai une erreur, qui est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <beans> <bean id="beanRefFactory" class="org.springframework.context.support.ClassPathXmlApplicationContext"> <constructor-arg> <list> <value>applicationContext.xml</value> <value>applicationContext-dataSource.xml</value> <value>applicationContext-quartz.xml</value> <value>applicationContext-mail.xml</value> </list> </constructor-arg> </bean> <bean id="beanRefFactoryEjb" class="org.springframework.context.support.ClassPathXmlApplicationContext"> <constructor-arg> <list> <value>applicationContext-localEjb.xml</value> <!-- beanRefFactoryEjb merge-point --> </list> </constructor-arg> </bean> <!-- beanRefFactoryEjbXml merge-point --> </beans>
Plus haut dans les logs je me suis aperçu que appContext-mail ne semblait pas pris en compte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 09:47:42,080 ERROR [ContextLoader] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'incidentService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot create inner bean 'com.thalys.opalys.business.IncidentServiceImpl#5363a8' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.thalys.opalys.business.IncidentServiceImpl#5363a8' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'javaMailSenderImpl' while setting bean property 'javaMailSenderImpl'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'javaMailSenderImpl' is defined org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.thalys.opalys.business.IncidentServiceImpl#5363a8' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'javaMailSenderImpl' while setting bean property 'javaMailSenderImpl'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'javaMailSenderImpl' is defined org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'javaMailSenderImpl' is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:360) ...
Je pense que le pb vient de là, mais pourquoi? Quelqu'un peut-il m'expliquer?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 09:47:33,093 INFO [ContextLoader] Root WebApplicationContext: initialization started 09:47:33,093 INFO [[/opalys-server-remoting]] Loading Spring root WebApplicationContext 09:47:33,180 INFO [CollectionFactory] JDK 1.4+ collections available 09:47:33,195 INFO [CollectionFactory] Commons Collections 3.x available 09:47:33,230 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] 09:47:33,792 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-dataSource.xml] 09:47:33,851 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-quartz.xml] 09:47:33,868 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-server-authentication.xml] 09:47:33,962 INFO [XmlWebApplicationContext] Bean factory for application context [Root WebApplicationContext]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [messageSource,sessionFactory,hibernateInterceptor,pointDao,particularPointDao,axisDao,referenceDao,passagePointDao,varianteDao,userDao,roleDao,regularityFormDao,endOfMissionMessageDao,effectiveTrancheDao,trainSetDao,effectivePassageDao,incidentFormDao,eventTargetDao,eventDao,actionDao,eventTargetTypeDao,eventTypeDao,actionTypeDao,emailActionTypeDao,emailUserActionTypeDao,emailMailingListActionTypeDao,mailingListDao,stateDao,breakageFormDao,incidentDao,incidentTypeDao,effectDao,effectivePassageIssueDao,varianteSpecialCaseDao,trancheDao,breakageDao,incidentLocationDao,incidentFormNoticeSenderDao,administrationService,dataImportService,echoService,securityService,trafficGeneratorService,schedulerService,valentysService,incidentService,breakageService,regularityService,passengerFileParsingService,serviceSecurityInterceptor,serviceAccessDecisionManager,serviceDecisionVoter,dataSource,transactionManager,scheduler,basicProcessingFilter,authenticationEntryPoint,opalysAuthenticationManager,daoAuthenticationProvider,userCacheManager,userCacheBackend,userAuthenticationCache,passwordEncoder,opalysUserDetailsService]; root of BeanFactory hierarchy 09:47:33,983 INFO [XmlWebApplicationContext] 64 beans defined in application context [Root WebApplicationContext]
Nicolas.
Partager