![](/img/trans.png)
[英]@EJB dependency Injection doesn't work in JBoss AS 6 NullPointerException
[英]@Resource injection in JBOSS AS 7 doesn't work
(UPDATED)
我已經在jboss-as-7.1.1.Final上將Web應用程序部署為獨立應用程序,並且我有一個啟動類可以按以下方式進行初始化:
@Startup
@Singleton
public class StartupBean {
@PostConstruct
void init() {
EmailSenderService emailSenderService = new EmailSenderService();
emailSenderService.testMail();
}
}
問題是在另一個類中定義如下:
@Stateless
public class EmailSenderService {
@Resource(mappedName="java:jboss/mail/Default")
private Session mailSession;
@PostConstruct
public void testMail(){
if(mailSession == null){
System.out.println("NULL");
}
}
}
啟動應用程序服務器時,啟動類將調用該方法,但是mailSession屬性不會由容器初始化,並且為null。
我的JBoss standalone.xml中有以下配置:
<subsystem xmlns="urn:jboss:domain:mail:1.0">
<mail-session jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp">
</smtp-server>
</mail-session>
</subsystem>
知道為什么容器不初始化mailSession嗎?
盡管這是一個Web應用程序,但是我需要在HTTP請求之前進行一些初始化,這就是為什么我使用@StartUp類和其他東西的原因。
問候
@Resource批注必須在bean類中使用。 在您的情況下,EJB容器只會忽略EmailSenderService
定義的注釋。
16.4.1.1使用注釋注入簡單的環境條目。
Bean Provider使用Resource注釋將Bean類的字段或方法注釋為注入簡單環境條目的目標。
另請注意,該字段不能為靜態。
16.2.2環境條目的注釋。
該字段或方法可以具有任何訪問限定符(公共,私有等),但不能為靜態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.