在部署中发现和解决的问题,记录在这里,呵呵,便于查询。
1、环境
netbeans6.9.1
javaee5.0
jboss5.1.0.GA
2、打包
打包成ear
3、说明
app.jar :EJB代码和描述符
app.war :web应用程序,它提供前端界面来让用户和商业组件(EJB)进行交互。sfejb3/view目录中包含的web源码不经修改地加入到了这个归档文件。Ant任务也添加了WEB-INF目录,它包含不直接通过web浏览器访问却也是应用程序一部分的文件。它包含了部署描述符(web.xml)和web引用程序所需要的额外的jar文件。
jsfejb3.ear:此文件是完整的应用程序,包含EJB模块和web模块。 它还包含一个其它的描述符:application.xml。你也可能单独部署EJB和web 模块,但是EAR提供了方便的单一方法。
4、EAR文件的内容应该类似于:
jsfejb3.ear
|+ app.jar // contains the EJB code
|+ import.sql
|+ Todo.class
|+ TodoDao.class
|+ TodoDaoInt.class
|+ META-INF
|+ persistence.xml
|+ app.war // contains web UI
|+ index.html
|+ index.xhtml
|+ create.xhtml
|+ edit.xhtml
|+ todos.xhtml
|+ TodoBean.class
|+ style.css
|+ META-INF
|+ WEB-INF
|+ faces-config.xml
|+ navigation.xml
|+ web.xml
|+ META-INF // contains the descriptors
|+ application.xml
|+ jboss-app.xml
5、application.xml
这个文件列出在EAR中的JAR文件(这里是app.jar),并告诉JBoss服务器该在哪寻找那些文件。应用程序的根URL也由此文件中的“context-root”指定。
<application>
<display-name>Sample Todo</display-name>
<module>
<web>
<web-uri>app.war</web-uri>
<context-root>/jsfejb3</context-root>
</web>
</module>
<module>
<ejb>app.jar</ejb>
</module>
</application>
注:这个文件可以在netbeans IDE工具-企业应用项目-右键-新建-标准部署描述符自动生成。
6、JBoss-app.xml
每个EAR的应用程序应为类加载器指定唯一的字符串。在这里,我们使用应用程序名“jsfejb3”作为类加载器的名称
<jboss-app>
<loader-repository>
jsfejb3:archive=jsfejb3.ear //jsfejb3:,这个可以任意取名
</loader-repository>
</jboss-app>
7、app.jar
它包含了EJB3 Session Bean和Entity Bean类以及相关的配置文件。此外,persistence.xml文件为EntityManager配置了后台数据源(在这里是缺省的HSQL数据库)。
<persistence>
<persistence-unit name="helloworld">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
8、app.war
它包含了按照Web Application aRchive(WAR)打包的Web UI文件。它包含所有的Web页面和必须的配置文件。对于所有的Java EE应用程序来说,web.xml是一个非常重要的文件。它是Web部署描述符文件。faces-config.xml文件是JSF配置文件。navigation.xml 包含了JSF页面导航的规则。
//faces-config.xml
<faces-config>
<application>
<view-handler>
com.sun.facelets.FaceletViewHandler
</view-handler>
</application>
<managed-bean>
<description>Dao</description>
<managed-bean-name>todoBean</managed-bean-name>
<managed-bean-class>TodoBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
(待续)