J2EE CDI beans部署在獨立的jar包中

來源:互聯網
上載者:User

標籤:j2ee   context depedency in   cdi aop   

             本篇部落客要介紹,CDI開發中,將所有的CDI Bean打包到一個jar包中,如何解決org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [...] with qualifiers [@...] at injection point ... 異常。


介紹

           在CDI項目中beans.xml的一個主要作用就是告訴容器我們所開發的CDI存在的位置,保證容器能夠掃描到這些類檔案。這篇部落客要介紹在一個獨立的jar檔案中如何配置才能夠保證在web應用中的這些CDI Bean能夠被載入進來。


開發環境

1.  Ubuntu 12.04

2  JDK 1.7.0.2.1

3  Weld 1.1.10

4 Tomcat 7.0.35


CDI JAR檔案

            在上一篇部落格中我們已經知道開發一個CDI web應用程式需要將beans.xml檔案放到WEB-INF檔案夾下以保證web容器能夠掃描並載入這些CDI bean 類檔案。而通常項目開發過程中我們會將這些CDI Beans打包到一個JAR檔案中,放到web項目的WEB-INF/lib檔案夾下使用,這樣的話我們必須得保證容器知道這些CDI beans並去掃描跟載入這些類。解決這個問題的辦法就是將beans.xml檔案放到JAR檔案下的META-INF檔案夾下。


應用測試

             我們使用一個比較簡單的web應用來測試這個方案。首先應用程式是一個多模組的maven項目,在web模組的war包中包含一個CDi模組。如果你不知道如何構建一個多模組的web應用程式,請參考How to create a multiple module project using Maven.


應用結構

     

    正如我們看到的,我們在META-INF檔案夾下建立了一個beans.xml檔案。當我們構建web模組時被引用的CDI模組會被引用到WEB-INF、lib檔案目錄下。由於CDI模組的jar包包含了beans.xml檔案,容器就會知道去哪掃描這些CDI檔案。

    CDI Service介面和它的實作類別都包含在項目的lib目錄下,這樣實作類別就可以注入到web應用模組中TestServlet的Servlet中。


錯誤配置結果

    如果我們沒有將包含CDI beans的jar包正確的部署到相應的地方,在CDI初始化的時候找不到相應的依賴關係就會拋出初始化異常資訊。如容器找不到任何的依賴注入的依賴關係就會拋出以下異常資訊

org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Service] with qualifiers [@Default] at injection point ...

本文涉及到的原始碼下載
:java-ee-cdi-beans-deployed-in-external-library-web-inf-lib-jar-file.zip

J2EE CDI beans部署在獨立的jar包中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.