2009-12-08 5 views
2

Weblogic 10.0에 배포 된 응용 프로그램에서 전자 메일을 보내야합니다. 서버 측에 메일 세션 등록 정보를 넣으려고합니다. mail.host 또는 mail.debug과 같은 속성은 정상적으로 작동합니다. 하지만 어떻게 암호를 구성합니까? 서버 측에 메일 비밀번호를 저장하는 방법은 무엇입니까?

<bean id="mailSender" 
    class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="session" ref="mailSession"/> 
    <property name="username" value="myLogin"></property> 
    <property name="password" value="myPassword"></property> 
</bean>  
<bean id="alertsMailSession" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>mail/mainSession</value> 
    </property>  
    <property name="resourceRef"> 
     <value>true</value> 
    </property> 
</bean> 

내가 mail.smtp.password 속성을 시도했지만 작동하지 않습니다 지금은 봄 구성 파일에 있습니다. Sun 설명서에는 암호에 대한 속성이 없다고 나와 있습니다 (일부 예제에서는 mail.smtp.password을 보았지만). 어떻게해야합니까? 응용 프로그램이 아닌 서버에 로그인/암호 정보를 구성 할 수 있습니까?

EDIT
여러분 모두는 몇 가지 속성 파일을 제안합니다. 나는 그들을 원하지 않는다. 내 응용 프로그램 서버에 메일 세션이 있습니다. 나는 JNDI에 의해이 세션을 얻는다. 메일을 보내는 데 사용할 호스트를 구성 할 수 있습니다. 하지만 암호를 넣을 수는 없습니다. 작동하지 않습니다. 모든 구성을 Weblogic 콘솔에서 수행하기를 원합니다. 그것을 성취하는 방법?

답변

2

확실하지 :

<bean id="mailSender" 
    class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
<property name="session" ref="mailSession"/> 
<property name="username"> 
    <jee:jndi-lookup jndi-name="config/mail/username" resource-ref="true"/> 
</property> 
<property name="password"> 
    <jee:jndi-lookup jndi-name="config/mail/password" resource-ref="true"/> 
</property> 

과 당신의 web.xml에 다음을 추가합니다

<env-entry> 
    <env-entry-name>config/mail/username</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value></env-entry-value> 
</env-entry> 
<env-entry> 
    <env-entry-name>config/mail/password</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value></env-entry-value> 
</env-entry> 

Spring은 웹 어플리케이션 환경에서 username과 password의 값을 검색 할 것입니다. weblogic 관리 콘솔을 사용하면 환경 항목과 사용자 이름 및 비밀번호를 구성 할 수 있습니다. 변경 내용을 적용하려면 응용 프로그램을 다시 시작해야 할 것입니다. 스프링 컨텍스트가 시작될 때만로드되기 때문에 응용 프로그램을 다시 시작해야하지만 메일 서버 변경 설정은 꽤 큰 변화이므로 재시작해야합니다 그게 아쉽지 않을거야.

+0

최고의 아이디어를 보인다. 아쉽게도 Weblogic 관리 콘솔에는 환경 변수 편집기가 없습니다. 또는 나는 그것을 발견 할 수 없다. 어쨌든, 나는 내가받은 모든 것 중에서 가장 유용한 것으로 당신의 대답을 받아들입니다. –

0

이미 속성 파일 사용에 대한 답변이 있지만 누락 된 중요한 부분 중 하나입니다. 이 계정 비밀번호를 보호해야합니까?

그렇다면 파일이나 키를 암호화하는 것이 좋습니다. 코드에 포함 된 간단한 암호화 키로 충분할 수 있습니다. 필드 또는 전체 파일을 암호화하십시오.

셋업 사용자 이름과 비밀번호를 같은 당신의 봄 컨텍스트에서 : 나는 스피어의 기압과 함께 작업 할이, 웹 로직에 도움이 될 것입니다,하지만 난뿐만 아니라 웹 로직에서 일하는 것이 상상 것인지

1

Weblogic이 mail.smtp.password 속성을 자동으로 인식하지 못하더라도 이렇게하는 방법이 있습니다. 당신은 JavaMail에 등록 필드에 평소와 같이이 속성을 추가하고 다음과 같이 EJB에 이메일을 보낼 수 있습니다

@Stateless 
public class MailBean { 
    @Resource(name="mail/MailSession") 
    private Session session; 

    public void sendMail() { 
     Transport transport = null; 
     try { 
      Message message = new MimeMessage(session); 
      // prepare your mail here... 
      transport = session.getTransport("smtp"); 
      String user = session.getProperty("mail.smtp.user"); 
      String password = session.getProperty("mail.smtp.password"); 
      transport.connect(user, password); 
      message.saveChanges(); 
      transport.sendMessage(message, message.getAllRecipients()); 
     } finally { 
      if (transport != null) try { transport.close(); } 
      catch (MessagingException e) { e.printStackTrace(); } 
     } 
    } 
} 
관련 문제