EAP 5中的CDI支持

发布者:    |       CDI

最近很多人问我是否必须等到EAP 6才能在受支持的JBoss应用服务器中使用CDI。好消息是,不必等待!尽管目前没有针对CDI本身的商业化产品(即它不受支持),但得益于Weld-servlet库,您仍然可以将它用作基于EAP的应用程序的组件框架。更好的是,它不需要对默认的EAP安装进行任何配置更改 - 基于CDI的应用程序可以直接部署到其中,并立即运行。

开始使用基于EAP 5.x的CDI项目最简单的方法是使用Maven原型。Dan已经为我们准备好了,让我们来一步步了解如何启动。

先决条件

  • SVN客户端
  • Maven
  • EAP 5.1
  • 可运行shell脚本的操作系统的机器(Linux/OSX/Cygwin)

1. 从SVN检出原型源代码(此步骤需要SVN客户端)

  svn co http://anonsvn.jboss.org/repos/weld/archetypes/eap51-weld-jsf-webapp/trunk/ eap51-weld-jsf-webapp

2. 切换到原型项目目录

  cd eap51-weld-jsf-webapp

3. 使用提供的shell脚本安装原型

  ./create-archetype.sh install

最后一步将在本地Maven仓库中创建原型并安装它。一旦安装了原型,我们就可以使用它来创建一个新项目。

4. 使用原型创建新项目。通常您会从保存所有项目的目录中运行此命令。

   mvn archetype:generate -B -DarchetypeCatalog=local 
        -DarchetypeArtifactId=eap51-weld-jsf-webapp 
        -DarchetypeGroupId=org.jboss.weld.archetypes 
        -DarchetypeVersion=1.0.0-SNAPSHOT         
        -DartifactId=test-project 
        -DgroupId=com.acme 
        -Dpackage=com.acme.test 
        -Dversion=1.0.0-SNAPSHOT 
        -Dname="JSF 1.2 and CDI webapp project"

您需要替换以下参数值

  • -DartifactId- 您希望用于应用程序的Maven工件ID
  • -DgroupId- 您希望用于应用程序的Maven组ID
  • -Dpackage- 您项目的基包名。原型将在该包内生成一些子包。
  • -Dname- 您项目的描述性名称

5. 切换到您的新项目目录。它将具有您在上一步骤中指定的artifactId参数的相同名称。

  cd test-project

6. 查看项目!原型已创建了一个完整的项目,包括默认的数据源和Arquillian对单元测试的支持。查看src目录,并注意已经为您创建的源包。当然,如果您愿意,可以修改这些包。

7. 配置JBOSS_EAP_HOME环境变量。这样Maven就会知道您的项目部署在哪里。或者,在Maven的.m2/settings.xml文件中设置一个属性值jboss-eap.home。项目根目录中包含的readme.txt文件解释了如何进行此操作的具体细节。readme.txt文件。

8. 构建和部署项目。确保EAP服务器已经运行,以便进行此步骤

  mvn clean package jboss:hard-deploy

9. 检查EAP日志以确认项目已成功部署,然后使用网页浏览器打开项目的首页

  http://localhost:8080/test-project

当然,您需要根据项目输入的artifactId修改上述URL。

完成!从现在开始,您拥有一个完全可工作的项目,可以随意修改。如果您想看到一个更全面的示例,该示例可以在EAP中运行,请查看Ticket-Monster示例。这是一个基于EAP 5.1的演示,我们目前正在开发中(即,并非所有功能都可用)以展示Seam在云环境中的功能(托管在github.com)

  http://github.com/pmuir/ticket-monster

在这个示例中,我们使用了Seam Persistence模块、Seam Remoting和Errai来为示例的管理控制台提供一个基于GWT的界面。顺便提一下,Ticket-Monster还使用了我们目前正在开发的Seam-Cloud模块,该模块提供jClouds支持和Infinispan集成。其他Seam 3模块也很可能在EAP 5中无缝工作,但在此我不会提供确切的列表(您可以自行实验;)。


回到顶部