簡體   English   中英

JBOSS AS 7中的@Resource注入不起作用

[英]@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定義的注釋。

根據ejb 3.1規范:

16.4.1.1使用注釋注入簡單的環境條目。

Bean Provider使用Resource注釋將Bean類的字段或方法注釋為注入簡單環境條目的目標。

另請注意,該字段不能為靜態。

16.2.2環境條目的注釋。

該字段或方法可以具有任何訪問限定符(公共,私有等),但不能為靜態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM