AnA*_*ser 3 java glassfish code-injection java-ee
我正在使用glassfish v3,我通过管理控制台创建了一个JavaMail会话.我想像这样使用Mail会话:
....
import javax.annotation.Resource;
import javax.mail.*;
import javax.mail.internet.*;
public class Mailer {
MailGenerator mailGenerator;
@Resource(name = "mail/WMCMail")
private Session mailSession;
public Mailer(MailGenerator mailGenerator) {
this.mailGenerator = mailGenerator;
}
public void sendMixedMail(String recipient, String subject) {
try {
Message message = new MimeMessage(mailSession);
message.setRecipients(
Message.RecipientType.TO,
InternetAddress.parse(recipient, false));
message.setSubject(subject);
......
Transport.send(message);
logger.log(Level.INFO, "Mail sent to {0}.", recipient);
} catch (MessagingException ex) {
logger.log(Level.SEVERE, "Error in sending email to " + recipient, ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用sendMixedMail方法时,我看到mailSession为null.是不是可以将资源注入普通类?当我说正常时,我指的是一个不是托管bean或ejb-something的类.
不,你不能为普通班级做到这一点.引用SUN的J2EE注入页面:
请记住,Java EE 5平台容器只有在容器管理的组件(如EJB bean,Servlet和JavaServer Pages(JSP)技术标记处理程序)上使用它们时才能透明地处理注入.
这有两个原因.首先,出于性能考虑,容器可以将其注释的搜索限制为仅对其管理的组件进行搜索,这些组件在部署描述符中定义或可在特定的类路径位置中访问.其次,容器必须能够控制组件的创建,以便能够透明地执行对组件的注入.
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |