jboss配置文件的簡單介紹
這里面是最麻煩的,我會將遇到的常見錯誤描述一下,并說明解決方法。
要部署EJB就要修改部署文件,因為默認生成的部署文件還是有出路的。但是網絡上很多文章提到需要修改的文件頗多,我在實際開發的時候覺得沒有必要修改這么多文件,請聽我慢慢到來。
與部署有關的文件如下:
文件名稱 |
路徑 |
用途 |
standardjaws.xml |
jboss-3.0.2\server\default\conf |
Entity EJB標準部署描述文件 |
standardjbosscmp-jdbc.xml |
jboss-3.0.2\server\default\conf |
JBossCMP容器的標準部署描述文件。 |
standardjboss.xml |
jboss-3.0.2\server\default\conf |
JBoss的標準部署描述文件。 |
oracle-service.xml |
jboss-3.0.2\server\default\deploy |
Oracle數據庫的部署描述文件(非事務處理數據源),需要從jboss-3.0.2\docs\examples\jca中copy過來 |
oracle-xa-service.xml |
jboss-3.0.2\server\default\deploy |
Oracle數據庫的部署描述文件(事務處理數據源),需要從jboss-3.0.2\docs\examples\jca中copy過來 |
ejb-jar.xml |
jar的META-INF目錄中 |
jar及其ejb標準部署描述文件 |
jaws.xml |
jar的META-INF目錄中 |
Entity EJB部署描述文件,這個文件描述了CMP定義以及其持久屬性。 |
jboss.xml |
jar的META-INF目錄中 |
EJB在Jboss的JNDI部署描述文件 |
|
|
|
1. standardjaws.xml:這個文件主要描述了數據源和映射類型,EJB映射的表。這個數據源描述了一個JNDI名稱,可以通過這個JNDI獲得一個數據源連接池。jar包的META-INF目錄中有個jaws.xml與此文件對應,只要把jar中的jaws.xml它配置好了就可以,不用修改這個文件。
2. standardjbosscmp-jdbc.xml:JBossCMP容器的標準部署描述文件。網上說此文件需要進行修改,比如
<defaults>
缺省的數據源
<datasource>java:/DefaultDS</datasource>
缺省的數據庫類型
<datasource-mapping>Hypersonic SQL</datasource-mapping>
……..
</defaults>
修改成當前使用的配置
當前使用的數據源
<datasource>java:/NECOracle</datasource>
當前使用的數據庫類型
<datasource-mapping>Oracle8</datasource-mapping>
但是在實際操作中沒有進行任何修改也成功的部署了ejb。所以這個文件應該不用修改。
3. standardjboss.xml:JBoss的標準部署描述文件。此文件不需要修改。
4. jaws.xml:jaws.xml對應standardjaws.xml文件,但是此文件在jar的META-INF目錄中,這個文件描述了CMPEJB定義以及其持久屬性。只專門針對此jar的數據源和映射類型的描述。此文件需要做修改。
<jaws>
此處聲明的DataSource是此jar應該對應的DataSource,這個數據源就是在oracle-service.xml中描述的數據源,oracle-service.xml中可以有多個數據源,要選擇此jar相對應的數據源。如果oracle-service.xml文件只是使用原來的數據源OracleDS,那么此處直接修改就可以:
EntityEJB的數據源,這個OracleDS是oracle-service.xml文件默認的數據源
<datasource> OracleDS</datasource>
注意:此文件是由JBulider自動生成的,所以此DataSource也是自動加上的,此名稱缺省與在EJBModule中配置的DataSource的名稱一致,所以為了方便起見,EJBModule中配置的DataSource應該是oracle-service.xml中被聲明的數據源(也可修改oracle-service.xml文件,進行添加)。這樣此處就不用進行修改。比如本例“NECOracle”就在oracle-service.xml中聲明了。
數據庫的類型,此處必須是正確的,就是必須是standardjbosscmp-jdbc.xml定義的數據庫
<type-mapping>Oracle8</type-mapping>
以下是此EJB的相關描述
<enterprise-beans>
<entity>
EntityEJB的名稱
<ejb-name>Systui</ejb-name>
開始聲明具體的數據庫字段名稱和EJB域的映射關系
<cmp-field>
<field-name>tuiid</field-name>
<column-name>TUIID</column-name>
</cmp-field>
……………..
</enterprise-beans >
我們也可以在oracle-service.xml中增加數據源,并使用這個數據源(如何增加數據源下面oracle-service.xml會詳細講到),同時此名稱缺省值是JBulider的EJBModule中創建的DataSource。
NECOracle是在oracle-service.xml新增的數據源
<datasource> NECOracle </datasource>
數據庫的類型,此處必須是正確的,就是必須是standardjbosscmp-jdbc.xml定義的數據庫
<type-mapping>Oracle8</type-mapping>
以下是此ejb的相關描述
<enterprise-beans>
<entity>
EntityEJB的名稱
<ejb-name>Systui</ejb-name>
開始聲明具體的數據庫字段名稱和EJB域的映射關系
<cmp-field>
<field-name>tuiid</field-name>
<column-name>TUIID</column-name>
</cmp-field>
……………..
</enterprise-beans >
5. oracle-service.xml:Oracle數據庫非事務處理數據源部署描述文件,這個文件用來描述oracle數據源,可以直接修改當前的數據源,也可以在此文件中增加數據源,本人傾向增加數據源,通過增加就可以有多個數據源供 EJB使用了。我們現在可以對其進行修改:
開始描述一個數據源,這個數據源的名稱是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>
修改后
<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:@172.28.119.173:1521:comp1</config-property>
此處描述數據源的連接驅動
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
訪問數據庫的用戶名
<config-property name="UserName" type="java.lang.String">mrc</config-property>
訪問數據庫的密碼
<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">
…….
此處描述數據庫的連接參數
<config-property name="ConnectionURL" type="java.lang.String">jdbc:oracle:thin:@172.28.119.173:1521:comp1</config-property>
此處描述數據源的連接驅動
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
訪問數據庫的用戶名
<config-property name="UserName" type="java.lang.String">mrc</config-property>
訪問數據庫的密碼
<config-property name="Password" type="java.lang.String">mrc1</config-property>
</properties>
</attribute>
……
</mbean>
</server>
6. oracle-xa-service.xml:此文件同oracle-service.xml是一個道理,區別在于此文件是描述事務處理數據源的,而oracle-service.xml則是描述非事務處理數據源的。本例使用非事務處理數據源,所以此對文件沒有進行修改。
7. ejb-jar.xml:此文件在jar的META-INF目錄中,是此jar及其EJB的標準部署描述文件。此處需要注意的就是文件中描述的DataSource。
<ejb-jar>
<display-name>MyEJBModule</display-name>
<enterprise-beans>
<entity>
<ejb-name>Systui</ejb-name>
<home>myejb.SystuiHome</home>
……
<resource-ref>
此處的JDBC名稱缺省值是EJBModule中創建的DataSource的名稱,EJBModule中創建的DataSource應該是在oracle-service.xml文件中聲明過的DataSource,否則此處就需要手工修改成oracle-service.xml中聲明的DataSource的名稱。
<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.xml:此文件在jar的META-INF目錄中,EJB在Jboss的JNDI部署描述文件。
<jboss>
<enterprise-beans>
<entity>
<ejb-name>Systui</ejb-name>
<jndi-name>Systui</jndi-name>
<resource-ref>
此處的JDBC名稱缺省值是EJBModule中創建的DataSource的名稱,EJBModule中創建的DataSource應該是在oracle-service.xml文件中聲明過的DataSource,否則此處就需要手工修改成oracle-service.xml中聲明的DataSource的名稱。
<res-ref-name>jdbc/NECOracle</res-ref-name>
<jndi-name>NECOracle</jndi-name>
</resource-ref>
</entity>
</enterprise-beans>
</jboss>
9. 相應的部署文件修改完成之后就可以發布EJB了。“Enterprise”->“Server Deployment”進入發布界面,“Action”選擇“Deploy”,“Archive(s)”可以選擇要發布的jar文件,通常這個文件和你的工程文件在一個目錄下。
posted on 2007-07-30 16:54 朱巖 閱讀(3506) 評論(0) 編輯 收藏 所屬分類: jboss文章