2014-09-11 2 views
0

Tomcat 6에서 개발 된 Spring 3.2.6 응용 프로그램을 Weblogic 12.1.2에 성공적으로 배포하려고합니다. Tomcat에서 응용 프로그램이 제대로 작동합니다. 응용 프로그램이 Tomcat의 메일 연결 서비스 (mail-1.4.7.jar)를 호출합니다. Tomcat에서 라이브러리 (mail jar)는 tomcat/lib에 있고 Weblogic에서는 app/oracle/admin/domains/devtest_domain/lib 폴더에 있습니다. javax.naming.NameNotFoundException을 사용하여 Weblogic에 배포

<!-- Data Source using JNDI --> 
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="resourceRef"> 
     <value>true</value> 
    </property> 
    <property name="jndiName"> 
     <value>${datasource.JndiName.DS}</value> 
    </property> 
</bean> 
<bean id="mailService" class="com.xxxx.xxxx.utils.MailService"> 
    <property name="mailSender" ref="mailSender" /> 
</bean> 

<bean id="mailSender" 
     class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="session" ref="mailSession" /> 
</bean> 

<!-- Mail Session using JNDI --> 
<bean id="mailSession" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="resourceRef"> 
     <value>true</value> 
    </property> 
    <property name="jndiName"> 
     <value>${mailSession.JndiName}</value> 
    </property> 
</bean> 

속성 파일의 내용

은 다음과 같습니다 :

은 applicationContext.xml이다

#Datasource 
datasource.JndiName.DS=java:comp/env/jdbc/xxxx 
#MailSession 
mailSession.JndiName=java:comp/env/mail/xxxx  

우리는 우리가 로그에 다음과 같은 예외를 참조 배포 실행하면 :

SEVERE: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'forgotPasswordAction': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.xxx.xxxx.utils.MailService com.xx.xx.action.ForgotPasswordAction.mailService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailService' defined in file [/u01/app/oracle/admin/domains/devtest_domain/servers/WLS_DEV1/stage/xx-dev/xxx-dev/WEB-INF/classes/META-INF/spring/applicationContext.xml]: Cannot resolve reference to bean 'mailSender' while setting bean property 'mailSender'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailSender' defined in file [/u01/app/oracle/admin/domains/devtest_domain/servers/WLS_DEV1/stage/xx-dev/xx-dev/WEB-INF/classes/META-INF/spring/applicationContext.xml]: Cannot resolve reference to bean 'mailSession' while setting bean property 'session'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailSession' defined in file 
[/u01/app/oracle/admin/domains/devtest_domain/servers/WLS_DEV1/stage/xxx-dev/xxxx-dev/WEB-INF/classes/META-INF/spring/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: While trying to look up comp/env/mail/xxxin /app/webapp/xxx-dev/1749454341.; remaining name 'comp/env/mail/xxx' 
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailSession' defined in file [/u01/app/oracle/admin/domains/devtest_domain/servers/WLS_DEV1/stage/xxxx-dev/xxxx-dev/WEB-INF/classes/META-INF/spring/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: While trying to look up comp/env/mail/xxin /app/webapp/xxx-dev/1749454341.; remaining name 'comp/env/mail/xxx' 
     at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 

Weblogic의 JNDI 트리를보고 'comp/env/mail/xxx'라는 이름의 리소스가 없습니다. 에스. 고급의 http://docs.oracle.com/cd/E15586_01/apirefs.1111/e13952/taskhelp/mail/CreateMailSessions.html

감사 :

은 우리가 같은 웹 로직에 JavaMail에를 구성해야합니까!

답변

0

는 또한 구성 파일이 너무 웹 로직 서버에서 메일 세션에 대한 새로운 JNDI 리소스를 반영하도록 변경했다, 웹 로직에서 설정에 메일 자원을 가지고 있었다.

mailSession.JndiName = 자바에서 : 광고/ENV/메일/XXXX mailSession.JndiName 하려면 = 메일/XXXX

감사합니다,