将一个在tomcat下能够运行的项目 移植 并部署在 jboss4.2.1 。需要注意的几个细节:
- jboss4.2.1结构,重点介绍常用的目录
- | -----bin 启动文件
- | |----conf
- | |
- |---server---default-----|--deploy-----tem---deploy
- | |
- | |-----tmp
- |-----lib 加入驱动包或是其它和jboss关联的包
- |
- |
- |-----docs----examples------jca
在 jboss-4.2.1.GA---------server------default-------deploy 目录下面给工程取名字很重要,也有一定的规范。要么用.war/.ear包的方式,如果是目录,那么目录后面也必须要加上.war/.ear 部署之后,上下文默认就是你包名字,但是jboss会自动把.war/.ear去掉。例如 项目下面部署了D:\jboss-4.2.1.GA\server\default\deploy\ecomapp.war,最后通过浏览器访问的时候,只要http://localhost:8080/ecomapp/ 就可以了。值得说的就是jboss会自动将项目部署在D:\jboss-4.2.1.GA\server\default\tmp\deploy下面。
在 jboss-4.2.1.GA----- -----docs----examples------jca 目录下面放的是jboss自带的写配置文件的方式。每个数据库的写法。可以参考的。不同于老版本的就是命名不一样了,现在是 mssql-ds.xml。(下面详细介绍)
- 配置关联文件,*-ds.xml。jboss-web.xml。
项目成功拷贝到 jboss-4.2.1.GA---------server------default-------deploy 目录下面后,然后就是配置关联文件。首先根据项目所属的数据库类型在docs----examples------jca 下拷贝相应的模板,jboss默认是hsqldb-ds.xml 文件。假设现在的数据库是sqlserver2000 ,这里就拷贝 mssql-ds.xml当作模板。然后将其改为下图:
mssql-ds.xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <datasources>
- <local-tx-datasource>
-
- <jndi-name>wfmsDataSource</jndi-name>
-
- <connection-url>jdbc:jtds:sqlserver://localhost:1433/ecomm_hts</connection-url>
-
- <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
-
- <user-name>sa</user-name>
- <password>sa</password>
- <metadata>
- <type-mapping>MS SQLSERVER2000</type-mapping>
- </metadata>
- </local-tx-datasource>
- </datasources>
将mssql-ds.xml 文件拷贝到jboss-4.2.1.GA---------server------default-------deploy 目录下。
并在工程目录下加入 jboss-web.xml文件。例如工程是:ecomapp.war,那么拷贝的路径将是D:\jboss-4.2.1.GA\server\default\deploy\ecomapp.war\WEB-INF\下。新建jboss-web.xml,写法如下:
jbos-web.xml 代码
- <?xml version='1.0' encoding='UTF-8' ?>
- <!DOCTYPE jboss-web
- PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN"
- "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">
- <jboss-web>
-
- <security-domain>java:/jaas/DefaultLogin</security-domain>
-
- <resource-ref>
-
- <res-ref-name>wfmsDataSource</res-ref-name>
-
- <res-type>javax.sql.DataSource</res-type>
-
- <jndi-name>java:/wfmsDataSource</jndi-name>
- </resource-ref>
- </jboss-web>
最后web.xml中也配置相应的datasource,例如下面:在we.xml最后面加入
web.xml 代码
xml 代码
- <resource-ref>
- <description>
- Resource reference to a factory for java.sql.Connection
- instances that may be used for talking to a particular
- database that is configured in the server.xml file.
- </description>
- <res-ref-name>wfmsDataSource</res-ref-name>
- <res-type>javax.sql.DataSource</res-type>
- <res-auth>Container</res-auth>
- </resource-ref>
具体写法参见附adminguide.pdf 的 3.6. J2EE and JNDI - The Application Component Environment P129
这样后,项目就能够运行了。
jaas 的配置 :
如果登录需要用jaas验证的话,这里还需要做下相应的配置。
首先在 jboss-4.2.1.GA---------server------default---------conf 目录下的 login-config.xml 文件中加入jaas的信息,如下:
login-config.xml 代码
xml 代码
- <application-policy name = "DefaultLogin">
- <authentication>
- <login-module code="com.ecomm.security.loginmodule.DefaultLoginModule"
- flag = "required">
- </login-module>
- </authentication>
- </application-policy>
然后在jboss-web.xml文件中配置对应的jaas的jndi,注意名字必须要统一,而且要这样java:/jaas/.......
- <security-domain>java:/jaas/DefaultLoginsecurity-domain>
最后是在登录的程序中也必须要把jaas的名字统一,例如程序中
- LoginContext lc = new LoginContext("DefaultLogin", new DefaultCallbackHandler(username, password));
- lc.login();
具体写法参见附adminguide.pdf 的 8.0 J2EE Security Configuration and Architecture P270
这样配置之后我的程序就能够运行了。首先要确保工程在tomcat下能运行的。