主要看Ant部分- -| 回首页 | 2004年索引 | - -混饭吃

在JBoss中布署EJB- -

                                      

在JBoss中布署EJB

作者:余斌斌本文选自:赛迪网2002年10月14日


在JBoss中,EJB部署文件除了ejb-jar.xml,还有jboss.xml、jaws.xml、jbosscmp-jdbc.xml。下面将一一介绍它们的编写。

1.ejb-jar.xml

ejb-jar.xml如何编写?这里只对以下几点进行重点讲解:

·cmp-version元素

指出当前EJB参照的规范版本,如1.x、2.x,建议使用EJB2.0规范写EJB。

·abstract-schema-name元素

指出在EJB QL查询中和实体Bean对应的数据表名,示例:

在ABookEJB组件的ejb-jar.xml中
 <abstract-schema-name>ABook</abstract-schema-name>
…
<!--
 通过书号精确查询图书,下面字符串"ABook"对大小写敏感,不能写成abook。
-->
    <query>  
    <query-method>  
     <method-name>findByCode</method-name>  
     <method-params>  
    <method-param>java.lang.String</method-param>  
    </method-params>  
    </query-method>  
   <ejb-ql>select object(a) from ABook a where a.code = ?1 </ejb-ql>  
    <query-spec></query-spec>  
    </query>


源代码:立即下载

jboss.xml

jboss.xml是用来定义EJB的JNDI名字的部署文件。在JAS3.0中

·缺省的JNDI名字为ejb-jar.xml中在ejb-name元素定义的名字。示例:

在SequenceGeneratorEJB的ejb-jar.xml中,SequenceGeneratorEJB的缺省JNDI名字为"com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorEJB"。下面给出在ejb-jar.xml中的部分代码:

<entity>  
 <display-name>SequenceGeneratorEJB</display-name>  
 <ejb-name>com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorEJB</ejb-name>  
 <home>com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorHome</home>  
 <remote>com.cwap.oa.sequencegenerator.ejb.SequenceGenerator</remote>  
<ejb-class>com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorEJB</ejb-class>  
…
</entity>


我们直接将只包括ejb-jar.xml的SequenceGenerator部署在JBoss中,看下图SequenceGenerator已部署成功了。



图 SequenceGenerator成功部署在JBoss中


通过JBoss的8082端口,我们可以看到缺省的JNDI名字:



图 SequenceGeneratorEJB的缺省JNDI名字


· 自定义JNDI名字

通过jboss.xml可以重新定义缺省的JNDI名字。示例:在SequenceGeneratorEJB的jboss.xml中,SequenceGeneratorEJB的自定义JNDI名字为"ejb/SequenceGeneratorEJB"。下面给出在jboss.xml中的部分代码:

<jboss>  
   <enterprise-beans>  
      <entity>  
        <ejb-name>com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorEJB
 </ejb-name>  
         <jndi-name>ejb/SequenceGenerator</jndi-name>  
      </entity>  
   </enterprise-beans>  
</jboss>


源代码:立即下载

通过JBoss的8082端口,我们可以查看自定义的JNDI名字:



图 SequenceGeneratorEJB的自定义JNDI名字


jaws.xml

jaws.xml用来设定EJB实体属性与数据库字段对应信息(CMP中使用)和定义finder方法等。

· JAWS是JBoss管理CMP型实体EJB的O/R映射管理器。在JAS3.0中JAWS是在standardjaws.xml中进行配置,standardjaws.xml文件被放在conf/config-name目录下。缺省的config-name为default。

· standardjaws.xml配置整个jboss中的JAWS,你可以在每个应用程序中通过jaws.xml扩展这个配置。

· standardjaws.xml / jaws.xml可以帮助你来做以下几件事情:

i. 指定数据源及其映射类型

ii. 设置一串关于jaws方法的选项

iii. 指定JAWS如何创建和使用数据表

iv. 定义finder方法存取实体EJB

v. 定义各种数据库的映射类型

· 下面以SequenceGeneratorEJB的jaws.xml为示例,具体讲解:

<jaws>  
   <datasource>DefaultDS</datasource>
讲解:指定数据源DefaultDS  
   <enterprise-beans>  
      <entity>  
 <ejb-name>com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorEJB</ejb-name>  
讲解:指定EJB为SequenceGeneratorEJB
   <cmp-field>  
<field-name>name</field-name>  
讲解:实体EJB的属性名称
<column-name>name</column-name>  
讲解:映射到数据库中字段的名字
<jdbc-type>VARCHAR</jdbc-type>  
讲解:实体EJB的属性的JDBC类型
<sql-type>VARCHAR(255) BINARY</sql-type>  
讲解:映射到数据库中字段的类型
       </cmp-field>  
         <cmp-field>  
            <field-name>count</field-name>  
            <column-name>count</column-name>  
<jdbc-type>BIGINT</jdbc-type>
<sql-type>BIGINT</sql-type>
         </cmp-field>
         <table-name>sequencegenerator</table-name>  
讲解:实体EJB映射到数据库中的数据表名
         <create-table>true</create-table>  
讲解:部署EJB时,是否创建数据表,为true,表示部署EJB时创建数据表。
在JAS3.0中,如果创建数据表时数据表已经存在,系统将不会执行创建命令,同时给出信息"Table 
'sequencegenerator' already exists"。
     <remove-table>false</remove-table>  
讲解:JBoss卸载EJB时,是否删除数据表,为true,表示卸载EJB时删除数据表。
         <row-locking></row-locking>  
讲解:在JBoss装载EJB时,是否对数据表进行封锁,为true,表示装载EJB时封锁对数据表的任何存取操作。
      </entity>  
   </enterprise-beans>  
</jaws>


源代码:立即下载

jbosscmp-jdbc.xml

· standardjbosscmp-jdbc.xml是JAS3.0提供的JBossCMP-JDBC配置文件,提供类似standardjaws.xml的配置。standardjbosscmp-jdbc.xml 文件被放在conf/config-name目录下。

· standardjbosscmp-jdbc.xml配置整个jboss中的JBossCMP-JDBC,你可以在每个应用程序中通过jbosscmp-jdbc.xml扩展这个配置。

· standardjbosscmp-jdbc.xml / jbosscmp-jdbc.xml用来完成以下设置:

i. 设置一些关于实体Bean和关联的缺省值

ii. 指定查寻数据源的JNDI名字及其映射类型

iii. 设置实体EJB的配置

iv. 配置实体EJB之间的关联

v. 设置已知的依赖类

vi. 定义各种数据库的映射类型

· 下面以SequenceGeneratorEJB的jbosscmp-jdbc.xml为示例,具体讲解:

<jbosscmp-jdbc>
   <enterprise-beans>  
      <entity>  
        <ejb-name>com.cwap.oa.sequencegenerator.ejb.SequenceGeneratorEJB</ejb-name> 
          <create-table>true</create-table>  
         <remove-table>false</remove-table>
         <table-name>sequencegenerator_test</table-name>  
         <cmp-field>  
            <field-name>name</field-name>  
            <column-name>name</column-name>
       <not-null />
            <jdbc-type>VARCHAR</jdbc-type>  
            <sql-type>VARCHAR(255) BINARY</sql-type>  
         </cmp-field>  
         <cmp-field>  
            <field-name>count</field-name>  
            <column-name>count</column-name>  
        <not-null />
            <jdbc-type>BIGINT</jdbc-type>  
            <sql-type>BIGINT</sql-type>  
         </cmp-field>  
      </entity>  
   </enterprise-beans>  
<dependent-value-classes>  
</dependent-value-classes>  
</jbosscmp-jdbc>


源代码:立即下载

掌握了以上三个文件的编写之后,将EJB部署在JAS中将是非常容易的事。

2002-7-25

- 作者: neitbe 2004年09月2日, 星期四 16:28

Trackback

你可以使用这个链接引用该篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=308406

回复

评论内容: