您的位置:首页 > 运维架构 > 网站架构

Java Web Application 自架构 六 邮件服务器与资源存储

2013-02-17 13:56 211 查看
这篇里,做一些简单轻松的配置,邮件服务器的连接与资源的存储。
第一篇的架构中就有提到,通常在开发Web程序时,要连接的外部辅助系统不仅仅只是数据库,还有很多其他的系统需要连接,故而将业务层下面一层叫做Pin, 来做与外部系统的数据交互。这里就列举一些:比如LDAP 服务器,即轻量级目录访问协议的服务器,简单而言是一种优化了读操作的数据库;用来连接其他Web或非Web程序的Web-Service ;邮件服务器;资源管理服务器等等。

很明显,我们的架构是:业务逻辑(Business)层将业务数据模型(Entity)传递给Pin层,Pin层将Entity解析为外部系统能够接受的形式后交由外部系统使用或帮助本系统代管;反方向地,Pin层将外部系统的数据读到并封装成本系统的Entity 后交给Business层做相应处理。

LDAP和Web-Service将会放在后面的两篇。这里,配置两个简单的:邮件服务器,资源管理服务器

1,邮件服务器。用法很容易想到,我们都见过很多的邮件服务器的Web Application,因为

这里笔者就不再废话连篇,上代码:

在@Configuration的ApplicationContext.java文件中ApplicationContext 类体中加入:

Java代码







@Bean public JavaMailSender mailSender() { Properties parameters = WebConfiguration.getSysParams(); JavaMailSenderImpl jms = new JavaMailSenderImpl(); jms.setHost((String) parameters.get("mail.smtp.host")); jms.setUsername((String) parameters.get("mail.smtp.username")); jms.setPassword((String) parameters.get("mail.smtp.password")); jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding")); jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port"))); jms.setProtocol((String) parameters.get("mail.transport.protocol")); jms.setJavaMailProperties(parameters); return jms; }
@Bean
public JavaMailSender mailSender() {
Properties parameters = WebConfiguration.getSysParams();
JavaMailSenderImpl jms = new JavaMailSenderImpl();
jms.setHost((String) parameters.get("mail.smtp.host"));
jms.setUsername((String) parameters.get("mail.smtp.username"));
jms.setPassword((String) parameters.get("mail.smtp.password"));
jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding"));
jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port")));
jms.setProtocol((String) parameters.get("mail.transport.protocol"));
jms.setJavaMailProperties(parameters);
return jms;
}


JavaMailSender类在org.springframework.context-support-x.x.x.RELEASE.jar包中,不要忘记导此包入WEB-INF/lib下

当然,还要有JavaMail API的类库,在Spring文档http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mail.html中写的是

mail.jar和activation.jar

由于activation.jar即JAF已经成为标准的Java组件而被包含在1.6版本以上的JDK中,所以1.6版本以上的JDK不再需要activation.jar,然后新版的JavaMail API应该是6个jars.分别为:mail.jar mailapi.jardsn.jap imap.jar pop3.jarsmtp.jar

Parameters 自然还在sysParams.properties文件中去写。

Plain代码







mail.store.protocol=pop3 mail.transport.protocol=smtp mail.smtp.encoding=utf-8 mail.smtp.host=127.0.0.1 mail.smtp.port=25 mail.smtp.username=root mail.smtp.password=root mail.smtp.socketFactory.port=465 mail.smtp.auth=true mail.smtp.timeout=10000 mail.smtp.starttls.enable=true mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.store.protocol=pop3
mail.transport.protocol=smtp
mail.smtp.encoding=utf-8
mail.smtp.host=127.0.0.1
mail.smtp.port=25
mail.smtp.username=root
mail.smtp.password=root
mail.smtp.socketFactory.port=465
mail.smtp.auth=true
mail.smtp.timeout=10000
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory


而后,在pin层新建接口IMailPin.java, 在pin.imap下新建该接口实现类SpringMailPin.java

代码如下:

Java代码







package com.xxxxx.webmodel.pin.impl;

import java.io.Serializable;

import javax.annotation.Resource;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;

import com.xxxxx.webmodel.pin.IMailPin;

@Component
public class SpringMailPin implements IMailPin,Serializable {

private static final long serialVersionUID = -1313340434948728744L;
private JavaMailSender mailSender;

public JavaMailSender getMailSender() {
return mailSender;
}
@Resource
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
@Override
public void testMail() {
JavaMailSenderImpl jms = (JavaMailSenderImpl)this.mailSender;
System.out.println(jms.getHost());
MimeMessage mimeMsg =jms.createMimeMessage();
try {
mimeMsg.setSubject("Test James");
mimeMsg.setFrom(new InternetAddress("xxxxxx@tom.com"));
mimeMsg.setRecipient(RecipientType.TO, new Inter-netAddress("xxxxx@live.com"));
mimeMsg.setRecipient(RecipientType.CC, new Inter-netAddress("xxxxxx@yahoo.com"));
mimeMsg.setRecipient(RecipientType.BCC, new Inter-netAddress("xxxxx@mail.com"));
mimeMsg.setText("Hello");
// MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMsg, true, "utf-8");

// mimeMessageHelper.setFrom("hitmit1314@tom.com");

// mimeMessageHelper.setTo("palmtale@live.com");

//
// mimeMessageHelper.setCc("palmtale@yahoo.com");

// mimeMessageHelper.setBcc("palmtale@mail.com");

// mimeMessageHelper.setSubject("Test mail");

// mimeMessageHelper.setText("Hi, Hello", true);

mailSender.send(mimeMsg);
} catch (MessagingException e) {
e.printStackTrace();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: