??xml version="1.0" encoding="utf-8" standalone="yes"?>
要部|?/span>EJBp修改部v文gQ因为默认生成的部v文gq是有出路的。但是网l上很多文章提到需要修改的文g颇多Q我在实际开发的时候觉得没有必要修改这么多文gQ请听我慢慢到来?/span>
与部|有关的文g如下Q?/span>
文g名称 |
路径 |
用?/span> |
standardjaws.xml |
jboss-3.0.2\server\default\conf |
Entity EJB标准部v描述文g |
standardjbosscmp-jdbc.xml |
jboss-3.0.2\server\default\conf |
JBossCMP容器的标准部|描q文件?/span> |
standardjboss.xml |
jboss-3.0.2\server\default\conf |
JBoss的标准部|描q文件?/span> |
oracle-service.xml |
jboss-3.0.2\server\default\deploy |
Oracle数据库的部v描述文gQ非事务处理数据源)Q需要从jboss-3.0.2\docs\examples\jca?/span>copyq来 |
oracle-xa-service.xml |
jboss-3.0.2\server\default\deploy |
Oracle数据库的部v描述文gQ事务处理数据源Q,需要从jboss-3.0.2\docs\examples\jca?/span>copyq来 |
ejb-jar.xml |
jar?/span>META-INF目录?/span> |
jar及其ejb标准部v描述文g |
jaws.xml |
jar?/span>META-INF目录?/span> |
Entity EJB部v描述文gQ这个文件描qCCMP定义以及其持久属性?/span> |
jboss.xml |
jar?/span>META-INF目录?/span> |
EJB?/span>Jboss?/span>JNDI部v描述文g |
|
|
|
1. standardjaws.xmlQ这个文件主要描qC数据源和映射cdQ?/span>EJB映射的表。这个数据源描述了一?/span>JNDI名称Q可以通过q个JNDI获得一个数据源q接池?/span>jar包的META-INF目录中有?/span>jaws.xml与此文g对应Q只要把jar中的jaws.xml它配|好了就可以Q不用修改这个文件?/span>
2. standardjbosscmp-jdbc.xmlQ?/span>JBossCMP容器的标准部|描q文件。网上说此文仉要进行修改,比如
<defaults>
~省的数据源
<datasource>java:/DefaultDS</datasource>
~省的数据库cd
<datasource-mapping>Hypersonic SQL</datasource-mapping>
……..
</defaults>
修改成当前用的配置
当前使用的数据源
<datasource>java:/NECOracle</datasource>
当前使用的数据库cd
<datasource-mapping>Oracle8</datasource-mapping>
但是在实际操作中没有q行M修改也成功的部v?/span>ejb。所以这个文件应该不用修攏V?/span>
3. standardjboss.xmlQ?/span>JBoss的标准部|描q文件。此文g不需要修攏V?/span>
4. jaws.xmlQ?/span>jaws.xml对应standardjaws.xml文gQ但是此文g?/span>jar?/span>META-INF目录中,q个文g描述?/span>CMPEJB定义以及其持久属性。只专门针对?/span>jar的数据源和映类型的描述。此文g需要做修改?/span>
<jaws>
此处声明?/span>DataSource是此jar应该对应?/span>DataSourceQ这个数据源是?/span>oracle-service.xml中描q的数据源,oracle-service.xml中可以有多个数据源,要选择?/span>jar相对应的数据源。如?/span>oracle-service.xml文g只是使用原来的数据源OracleDSQ那么此处直接修改就可以Q?/span>
EntityEJB的数据源Q这?/span>OracleDS?/span>oracle-service.xml文g默认的数据源
<datasource> OracleDS</datasource>
注意Q此文g是由JBulider自动生成的,所以此DataSource也是自动加上的,此名U缺省与?/span>EJBModule中配|的DataSource的名UC_所以ؓ了方便v见,EJBModule中配|的DataSource应该?/span>oracle-service.xml中被声明的数据源Q也可修?/span>oracle-service.xml文gQ进行添加)。这h处就不用q行修改。比如本?#8220;NECOracle”在oracle-service.xml中声明了?/span>
数据库的cdQ此处必L正确的,是必须?/span>standardjbosscmp-jdbc.xml定义的数据库
<type-mapping>Oracle8</type-mapping>
以下是此EJB的相xq?/span>
<enterprise-beans>
<entity>
EntityEJB的名U?/span>
<ejb-name>Systui</ejb-name>
开始声明具体的数据库字D名U和EJB域的映射关系
<cmp-field>
<field-name>tuiid</field-name>
<column-name>TUIID</column-name>
</cmp-field>
……………..
</enterprise-beans >
我们也可以在oracle-service.xml中增加数据源Qƈ使用q个数据源(如何增加数据源下?/span>oracle-service.xml会详l讲刎ͼQ同时此名称~省值是JBulider?/span>EJBModule中创建的DataSource?/span>
NECOracle是在oracle-service.xml新增的数据源
<datasource> NECOracle </datasource>
数据库的cdQ此处必L正确的,是必须?/span>standardjbosscmp-jdbc.xml定义的数据库
<type-mapping>Oracle8</type-mapping>
以下是此ejb的相xq?/span>
<enterprise-beans>
<entity>
EntityEJB的名U?/span>
<ejb-name>Systui</ejb-name>
开始声明具体的数据库字D名U和EJB域的映射关系
<cmp-field>
<field-name>tuiid</field-name>
<column-name>TUIID</column-name>
</cmp-field>
……………..
</enterprise-beans >
5. oracle-service.xmlQ?/span>Oracle数据库非事务处理数据源部|描q文Ӟq个文g用来描述oracle数据源,可以直接修改当前的数据源Q也可以在此文g中增加数据源Q本人們增加数据源,通过增加可以有多个数据源供 EJB使用了。我们现在可以对其进行修改:
开始描qC个数据源Q这个数据源的名U是OracleDSQ?/span>
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=OracleDS">
<depends optional-attribute-name="ManagedConnectionFactoryName">
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=OracleDS">
…….
此处描述数据库的q接参数
<config-property name="ConnectionURL" type="java.lang.String">jdbc:oracle:thin:@youroraclehost:1521:yoursid</config-property>
此处描述数据源的q接驱动
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
讉K数据库的用户?/span>
<config-property name="UserName" type="java.lang.String"></config-property>
讉K数据库的密码
<config-property name="Password" type="java.lang.String"></config-property>
</properties>
</attribute>
……
</mbean>
修改?/span>
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=OracleDS">
<depends optional-attribute-name="ManagedConnectionFactoryName">
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=OracleDS">
…….
此处描述数据库的q接参数
<config-property name="ConnectionURL" type="java.lang.String">jdbc:oracle:thin:@172.28.119.173:1521:comp1</config-property>
此处描述数据源的q接驱动
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
讉K数据库的用户?/span>
<config-property name="UserName" type="java.lang.String">mrc</config-property>
讉K数据库的密码
<config-property name="Password" type="java.lang.String">mrc1</config-property>
</properties>
</attribute>
……
</mbean>
我们也可以增加一个数据源
<?xml version="1.0" encoding="UTF-8"?>
<server>
…….
原来~省的数据源OracleDS
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=OracleDS">
<depends optional-attribute-name="ManagedConnectionFactoryName">
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=OracleDS">
…….
<config-property name="ConnectionURL" type="java.lang.String">jdbc:oracle:thin:@youroraclehost:1521:yoursid</config-property>
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
<config-property name="UserName" type="java.lang.String"></config-property>
<config-property name="Password" type="java.lang.String"></config-property>
</properties>
</attribute>
……
</mbean>
新增加的一个数据源NECOracle
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=NECOracle">
<depends optional-attribute-name="ManagedConnectionFactoryName">
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=NECOracle">
…….
此处描述数据库的q接参数
<config-property name="ConnectionURL" type="java.lang.String">jdbc:oracle:thin:@172.28.119.173:1521:comp1</config-property>
此处描述数据源的q接驱动
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
讉K数据库的用户?/span>
<config-property name="UserName" type="java.lang.String">mrc</config-property>
讉K数据库的密码
<config-property name="Password" type="java.lang.String">mrc1</config-property>
</properties>
</attribute>
……
</mbean>
</server>
6. oracle-xa-service.xmlQ此文g?/span>oracle-service.xml是一个道理,区别在于此文件是描述事务处理数据源的Q?/span>oracle-service.xml则是描述非事务处理数据源的。本例用非事务处理数据源,所以此Ҏ件没有进行修攏V?/span>
7. ejb-jar.xmlQ此文g?/span>jar?/span>META-INF目录中,是此jar及其EJB的标准部|描q文件。此处需要注意的是文g中描q的DataSource?/span>
<ejb-jar>
<display-name>MyEJBModule</display-name>
<enterprise-beans>
<entity>
<ejb-name>Systui</ejb-name>
<home>myejb.SystuiHome</home>
……
<resource-ref>
此处?/span>JDBC名称~省值是EJBModule中创建的DataSource的名UͼEJBModule中创建的DataSource应该是在oracle-service.xml文g中声明过?/span>DataSourceQ否则此处就需要手工修Ҏoracle-service.xml中声明的DataSource的名U?/span>
<res-ref-name>jdbc/NECOracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
</ejb-jar>
8. jboss.xmlQ此文g?/span>jar?/span>META-INF目录中,EJB?/span>Jboss?/span>JNDI部v描述文g?/span>
<jboss>
<enterprise-beans>
<entity>
<ejb-name>Systui</ejb-name>
<jndi-name>Systui</jndi-name>
<resource-ref>
此处?/span>JDBC名称~省值是EJBModule中创建的DataSource的名UͼEJBModule中创建的DataSource应该是在oracle-service.xml文g中声明过?/span>DataSourceQ否则此处就需要手工修Ҏoracle-service.xml中声明的DataSource的名U?/span>
<res-ref-name>jdbc/NECOracle</res-ref-name>
<jndi-name>NECOracle</jndi-name>
</resource-ref>
</entity>
</enterprise-beans>
</jboss>
9. 相应的部|文件修改完成之后就可以发布EJB了?#8220;Enterprise”Q?/span>>“Server Deployment”q入发布界面Q?#8220;Action”选择“Deploy”Q?#8220;Archive(s)”可以选择要发布的jar文gQ通常q个文g和你的工E文件在一个目录下?/span>