﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Topquan's Blog-文章分类-JBoss Server</title><link>http://www.blogjava.net/topquan/category/23907.html</link><description>分享价值----成就你我----我的博客----你的家</description><language>zh-cn</language><lastBuildDate>Sat, 07 Jul 2007 07:44:21 GMT</lastBuildDate><pubDate>Sat, 07 Jul 2007 07:44:21 GMT</pubDate><ttl>60</ttl><item><title>JBOSS4.0 JDBC数据源配置大全</title><link>http://www.blogjava.net/topquan/articles/82295.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Mon, 20 Nov 2006 07:48:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/82295.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/82295.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/82295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/82295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/82295.html</trackback:ping><description><![CDATA[<p><font face=宋体>这篇文章介绍了在JBoss4上使用各种主流</font> <a href="http://dev.easyde.net/database/" target=_blank><font face=宋体>数据库</font> </a><font face=宋体>的配置方法，翻译出来的目的是为了方便大家使用JBoss4时作为一个参考。希望对广大爱好</font> <a href="http://dev.easyde.net/java/" target=_blank><font face=宋体>Java</font> </a><font face=宋体>、爱好JBoss的朋友有所帮助。 <br><br>&#183; 前言 <br><br>Jboss 4.0的开发人员版本是一个开源的</font> <a href="http://dev.easyde.net/java/as/" target=_blank><font face=宋体>应用服务器</font> </a><font face=宋体>，他把HypersonicDB作为他的缺省数据库。然而，开发人员也许还要使用除了HypersonicDB以外其他种类的数据库，在这篇文章中我们将看到如何在Jboss上配置使用其他的数据库。 <br><br>&#183; 简介 <br><br>Jboss4.0使用了JDBC配置文件来配置数据库连接，它为</font> <a href="http://dev.easyde.net/java/ejb/" target=_blank><font face=宋体>EJB</font> </a><font face=宋体>和其它</font> <a href="http://dev.easyde.net/java/j2ee/" target=_blank><font face=宋体>J2EE</font> </a><font face=宋体>应用提供了数据源(data source)进行访问。如果你要使用HypersonicDB以外的数据库你就要修改这个配置文件。这篇文章将着重讲解下面的几个部分： <br><br>1) Jboss的EJB部署描述符 <br>2) Oralce数据库的配置 <br>3) </font><a href="http://dev.easyde.net/database/mysql/" target=_blank><font face=宋体>MySQL</font> </a><font face=宋体>数据库的配置 <br>4) Sysbase数据库的配置 <br>5) </font><a href="http://dev.easyde.net/database/db2/" target=_blank><font face=宋体>DB2</font> </a><font face=宋体>数据库的配置 <br>6) Infomix数据库的配置 <br><br>&#183; Jboss的EJB部署描述符 <br><br>standardjaws.</font> <a href="http://dev.easyde.net/web/xml/" target=_blank><font face=宋体>XML</font> </a><font face=宋体>（位于X:\jboss4\server\default\conf）是一个映射CMP 实体EJB的标准部署描述文件。它用于配置CMP实体EJB，你也可以使用jaws.xml代替。你可以把这个文件copy到ejb .jar文件中的META-INF目录下。这个文件用于描述下面的信息： <br><br>1) 描述一个数据源和映射类型。 <br>2) 描述EJB映射的表 <br>3) 描述EJB的finder方法 <br>4) 描述类型映射 <br><br>这里的数据源描述的是一个JNDI名称，可以通过这个JNDI来获得一个数据源连接池。Jboss4缺省的数据源使用的是HypersonicDB。如果使用其他的数据源你需要修改jaws.xml文件。 <br><br>standardjbosscmp-jdbc.xml（位于X:\jboss4\server\default\conf）是配置Jboss CMP容器的标准部署描述文件，你也可以使用一个自定义的配置文件--jbosscmp-jdbc.xml来代替它。这个文件也放在EJB.jar文件的META-INF目录中。缺省使用的还是HypersonicDB作为数据库，这里也需要修改。 <br><br>&#183; </font><a href="http://dev.easyde.net/database/oracle/" target=_blank><font face=宋体>Oracle</font> </a><font face=宋体>数据库的配置 <br><br>Oracle以它的运行稳定和可靠成为了一个非常受欢迎的企业级数据库。要在Jboss 上配置使用Oracle的话我们要做的第一件事就是把Oracle的JDBC</font> <a href="http://drivers.easyde.net/" target=_blank><font face=宋体>驱动</font> </a><font face=宋体>程序复制到ClassPath下。我们把这个JDBC驱动程序复制到server/default/lib目录下。为了使用Oracle的事务处理数据源我们还要把/docs/examples/jca/oracle-xa-ds.xml复制到/server/default/deploy目录下。如果使用的事非事务处理的数据源，就把/docs/examples/jca/oracle-ds.xml文件复制到/server/default/deploy目录下。 <br><br>下一步，我们需要修改oracle-de.xml配置文件。其中的&lt;driver-class/&gt;标签和&lt;connection-url/&gt;标签的设置如下： <br><br>Oracle OCI Type 2 Driver <br>Class: oracle.jdbc.driver.OracleDriver <br>URL: jdbc:oracle:oci8:@&lt;database&gt; <br>Oracle OCI Thin Type 4 Driver <br>Class: oracle.jdbc.driver.OracleDriver <br>URL: jdbc:oracle:thin:@&lt;host&gt;:&lt;port&gt;:&lt;database&gt; <br>Oracle OCI XA Type 2 Driver <br>Class: oracle.jdbc.xa.client.OracleXADataSource <br>URL: jdbc:oracle:thin:@&lt;host&gt;:&lt;port&gt;:&lt;database&gt; <br>Oracle OCI Type 2 Driver <br>Class: oracle.jdbc.driver.OracleDriver <br>URL: jdbc:oracle:oci8:@&lt;database&gt; <br><br>在Connection URL中&lt;host&gt;是安装Oracle的计算机主机名，&lt;port&gt;是oracle数据库的端口，&lt;database&gt;是数据库名称。下一步，我们将修改standardjaws.xml 或jaws.xml配置文件，并把&lt;datasource&gt; 和 &lt;type-mapping&gt;元素这只为下面这样： <br><br>&lt;jaws&gt; <br>&lt;datasource&gt;java:/OracleDS&lt;/datasource&gt; <br>&lt;type-mapping&gt;Oracle8&lt;/type-mapping&gt; <br>&lt;/jaws&gt; <br><br>下一步，再修改standardjbosscmp-jdbc.xml 或 jbosscmp-jdbc.xml配置文件，设置&lt;datasource&gt; 和 &lt;datasource-mapping&gt;元素使用Oracle。 <br><br>&lt;jbosscmp-jdbc&gt; <br>&lt;defaults&gt; <br>&lt;datasource&gt;java:/OracleDS&lt;/datasource&gt; <br>&lt;datasource-mapping&gt;Oracle8&lt;/datasource-mapping&gt; <br>&lt;/defaults&gt; <br>&lt;/jbosscmp-jdbc&gt; <br><br>最后我们需要修改login-config.xml文件来使用Oracle，下面是login-config.xml文件的&lt;application-policy&gt;元素： <br><br>&lt;application-policy name = "OracleDbRealm"&gt; <br>&lt;authentication&gt; <br>&lt;login-module code = <br>"org.jboss.resource.security.ConfiguredIdentityLoginModule" <br><br>flag = "required"&gt; <br>&lt;module-option name = "principal"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = "userName"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = "password"&gt;&lt;/module-option&gt; <br>&lt;module-option name ="managedConnectionFactoryName"&gt; <br>jboss.jca:service=LocalTxCM,name=OracleDS <br>&lt;/module-option&gt; <br>&lt;/login-module&gt; <br><br>&lt;/authentication&gt; <br>&lt;/application-policy&gt; <br>修改了oracle-ds.xml, standardjaws.xml, standardjbosscmp-jdbc.xml,和 <br>login-config.xml 文件之后就可以再Jboss4中使用Oracle了。 <br><br>&#183; MySQL数据库配置 <br><br>MySQL是一个开放源代码的数据库，有很多开源项目和小型的社团都在使用它。要在Jboss4中使用MySQL的话首先要把MySQL的JDBC驱动放到CLASSPATH中。同样，把它复制到/server/default/lib目录下，再把/docs/examples/jca/mysql-ds.xml复制到/server/default/deploy目录下。修改mysql-ds.xml文件，设置&lt;driver-class/&gt;为 com.mysql.jdbc.Driver再把&lt;connection-url/&gt;设置为 <br><br>jdbc:mysql://&lt;mysqlhost&gt;/&lt;database&gt;，其中&lt;mysqlhost&gt;是数据库主机名&lt;database&gt;是数据库名。 <br><br>然后需要设置standardjaws.xml 或 jaws.xml文件的&lt;datasource&gt;和&lt;type-mapping&gt;元素： <br><br>&lt;jaws&gt; <br>&lt;datasource&gt;java:/MySqlDS&lt;/datasource&gt; <br>&lt;type-mapping&gt;mySql&lt;/type-mapping&gt; <br>&lt;/jaws&gt; <br><br>同样也需要把standardjbosscmp-jdbc.xml 或 jbosscmp-jdbc.xml文件的&lt;datasource&gt; 和 &lt;datasource-mapping&gt;元素设置为下面这样： <br><br>&lt;jbosscmp-jdbc&gt; <br>&lt;defaults&gt; <br>&lt;datasource&gt;java:/MySqlDS&lt;/datasource&gt; <br>&lt;datasource-mapping&gt;mySql&lt;/datasource-mapping&gt; <br>&lt;/defaults&gt; <br>&lt;/jbosscmp-jdbc&gt; <br><br>最后再修改login-config.xml文件来使用MySQL： <br><br>&lt;application-policy name = "MySqlDbRealm"&gt; <br>&lt;authentication&gt; <br>&lt;login-module code = <br>"org.jboss.resource.security.ConfiguredIdentityLoginModule" <br>flag = "required"&gt; <br>&lt;module-option name ="principal"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name ="userName"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name ="password"&gt;&lt;/module-option&gt; <br>&lt;module-option name ="managedConnectionFactoryName"&gt; <br>jboss.jca:service=LocalTxCM,name=MySqlDS <br>&lt;/module-option&gt; <br>&lt;/login-module&gt; <br>&lt;/authentication&gt; <br>&lt;/application-policy&gt; <br><br>修改了mysql-ds.xml, standardjaws.xml, standardjbosscmp-jdbc.xml,和login-config.xml 文件就可以在Jboss上使用MySQL了。</font> </p>
<p><font face=宋体>&#183; SysBase<a href="http://dev.easyde.net/database/" target=_blank>数据库</a>配置 <br><br><a href="http://dev.easyde.net/database/sybase/" target=_blank>Sybase</a> Adaptive Server Ent<a href="http://dev.easyde.net/corp/solution/erp/" target=_blank>ERP</a>rises(ASE)是Sysbase公司的数据库<a href="http://www.easyde.net/server/" target=_blank>服务器</a>。ASE可以在Unix和<a href="http://dev.easyde.net/os/linux/" target=_blank>Linux</a>平台上使用。同样我们要把它的数据库<a href="http://drivers.easyde.net/" target=_blank>驱动</a>放到CLASSPATH中，把它复制到/server/default/lib目录下，然后把/docs/examples/jca/sybase-ds.<a href="http://dev.easyde.net/web/xml/" target=_blank>XML</a> 复制到/server/default/deploy目录下。修改sybase-ds.xml文件把&lt;driver-class/&gt;设置为 com.sybase.jdbc2.jdbc.SybDriver再把&lt;connection-url/&gt;设置为 jdbc:sybase:Tds:&lt;host&gt;:&lt;port&gt;/&lt;database&gt;，其中&lt;host&gt;&lt;port&gt;&lt;database&gt;分别为主机名、端口名和数据库名。同样需要修改standardjaws.xml 或 jaws.xml 文件的 &lt;datasource&gt; 和&lt;type-mapping&gt; 元素： <br><br>&lt;jaws&gt; <br>&lt;datasource&gt;<a href="http://dev.easyde.net/java/" target=_blank>Java</a>:/SybaseDS&lt;/datasource&gt; <br>&lt;type-mapping&gt;Sybase&lt;/type-mapping&gt; <br>&lt;/jaws&gt; <br><br>再修改standardjbosscmp-jdbc.xml 或 jbosscmp-jdbc.xml 文件的 &lt;datasource&gt; 和 &lt;datasource-mapping&gt;元素： <br><br>&lt;jbosscmp-jdbc&gt; <br>&lt;defaults&gt; <br>&lt;datasource&gt;java:/SybaseDS&lt;/datasource&gt; <br>&lt;datasource-mapping&gt;Sybase&lt;/datasource-mapping&gt; <br>&lt;/defaults&gt; <br>&lt;/jbosscmp-jdbc&gt; <br><br>最后修改login-config.xml 文件来使用Sysbase数据库.设置 &lt;application-policy/&gt; 元素： <br><br>&lt;application-policy name = "SybaseDbRealm"&gt; <br>&lt;authentication&gt; <br>&lt;login-module code = <br>"org.jboss.resource.security.ConfiguredIdentityLoginModule" <br>flag = "required"&gt; <br>&lt;module-option name ="principal"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = "userName"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = "password"&gt;&lt;/module-option&gt; <br>&lt;module-option name = "managedConnectionFactoryName"&gt; <br>jboss.jca:service=LocalTxCM,name=SybaseDS <br>&lt;/module-option&gt; <br>&lt;/login-module&gt; <br>&lt;/authentication&gt; <br>&lt;/application-policy&gt; <br><br>修改了sybase-ds.xml, standardjaws.xml, standardjbosscmp-jdbc.xml, 和 <br><br>login-config.xml文件后就可以在JBOSS中使用Sysbase了。 <br><br>&#183; <a href="http://dev.easyde.net/database/db2/" target=_blank>DB2</a>数据库配置 <br><br>IBM的DB2是一个完善、使用方便的数据库服务器，它可以在Linux，UNIX和<a class=wordstyle href="http://dev.easyde.net/os/<a%20target=" _blank?="">windows</a>/" target="_blank"&gt;<a class=wordstyle href="http://www.easyde.net/" target=_blank>Windows</a>平台上使用。在JBOSS4上使用DB2只要把db2java.zip复制到/server/default/lib目录下。然后复制/docs/examples/jca/db2-ds.xml到/server/default/deploy目录下，然后修改&lt;driver-class/&gt; 元素位 COM.ibm.db2.jdbc.app.DB2Driver ， &lt;connection-url/&gt; 元素为 jdbc:db2:其中的&lt;database&gt;元素代表数据库服务名。 <br><br>&lt;jaws&gt; <br>&lt;datasource&gt;java:/DB2DS&lt;/datasource&gt; <br>&lt;type-mapping&gt;DB2&lt;/type-mapping&gt; <br>&lt;/jaws&gt; <br><br>下面是相应的 standardjbosscmp-jdbc.xml (或 jbosscmp-jdbc.xml)文件: <br><br>&lt;jbosscmp-jdbc&gt; <br>&lt;defaults&gt; <br>&lt;datasource&gt;java:/DB2DS&lt;/datasource&gt; <br>&lt;datasource-mapping&gt;DB2&lt;/datasource-mapping&gt; <br>&lt;/defaults&gt; <br>&lt;/jbosscmp-jdbc&gt; <br><br>最后在login-config.xml文件中加上下面的内容： <br><br>&lt;application-policy name = "DB2DbRealm"&gt; <br>&lt;authentication&gt; <br>&lt;login-module code = <br>"org.jboss.resource.security.ConfiguredIdentityLoginModule" <br>flag = "required"&gt; <br>&lt;module-option name = <br>"principal"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = <br>"userName"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = <br>"password"&gt;&lt;/module-option&gt; <br><br>&lt;module-option name ="managedConnectionFactoryName"&gt; <br>jboss.jca:service=LocalTxCM,name=DB2DS <br>&lt;/module-option&gt; <br>&lt;/login-module&gt; <br>&lt;/authentication&gt; <br>&lt;/application-policy&gt; <br><br>完成上面的配置就可以在Jboss上使用DB2了 <br><br>&#183; Informix 数据库配置<br><br>IBM的Infoxmix数据库服务器用于作为<a href="http://dev.easyde.net/database/olap/" target=_blank>数据仓库</a>、分析和报告。在Jboss4上使用Informix数据库，首先要把它相应的数据库JDBC驱动复制到/server/default/lib目录下，然后，把/docs/examples/jca/informix-ds.xml 复制到 /server/default/deploy目录下，如果你使用的是事务的(XA)JDBC就复制那个/docs/examples/jca/informix-xa-ds.xml文件。 <br><br>下一步要作的就是修改这个informix-ds.xml文件，把&lt;driver-class/&gt;元素设置为：com.informix.jdbc.IfxDriver把&lt;connection-url/&gt;元素设置为 <br><br>jdbc:informix-sqli://&lt;host&gt;:&lt;port&gt;:informixserver=&lt;ifx_server&gt;， <br><br>其中，&lt;host&gt;,&lt;port&gt;,&lt;ifx_server&gt;分别代表数据库主机名、数据库端口和数据库服务名。然后修改standardjaws.xml 或 jaws.xml文件的&lt;datasource&gt; 和 &lt;type-mapping&gt;元素： <br><br>&lt;post&gt; <br>&lt;jaws&gt; <br>&lt;datasource&gt;java:/InformixDS&lt;/datasource&gt; <br>&lt;type-mapping&gt;InformixDB&lt;/type-mapping&gt; <br>&lt;/jaws&gt; <br><br>把standardjbosscmp-jdbc.xml 或 jbosscmp-jdbc.xml文件中的&lt;datasource&gt; 和 &lt;datasource-mapping&gt;元素设置为下面这样： <br><br>&lt;jbosscmp-jdbc&gt; <br>&lt;defaults&gt; <br>&lt;datasource&gt;java:/InformixDS&lt;/datasource&gt; <br>&lt;datasource-mapping&gt;InformixDB&lt;/datasource-mapping&gt; <br>&lt;/defaults&gt; <br>&lt;/jbosscmp-jdbc&gt; <br><br>最后在login-config.xml文件中加入&lt;application-policy/&gt;元素： <br><br>&lt;application-policy name = "InformixDbRealm"&gt; <br>&lt;authentication&gt; <br>&lt;login-module code = <br>"org.jboss.resource.security.ConfiguredIdentityLoginModule" <br>flag = "required"&gt; <br>&lt;module-option name = "principal"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = "userName"&gt;sa&lt;/module-option&gt; <br>&lt;module-option name = "password"&gt;&lt;/module-option&gt; <br>&lt;module-option name ="managedConnectionFactoryName"&gt; <br>jboss.jca:service=LocalTxCM,name=InformixDS <br>&lt;/module-option&gt; <br>&lt;/login-module&gt; <br>&lt;/authentication&gt; <br>&lt;/application-policy&gt; <br><br>这样，你就可以在Jboss4中使用Informix数据库了。 <br><br>&#183; 结论<br><br>Jboss4默认情况下使用的是Hypersonic数据库，但如你所见我们只要简单的修改几个配置文件就可以使用市面上流行的其他数据库了</font> </p>
<img src ="http://www.blogjava.net/topquan/aggbug/82295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-11-20 15:48 <a href="http://www.blogjava.net/topquan/articles/82295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBOSS热身：Windows环境下的JBOSS开发</title><link>http://www.blogjava.net/topquan/articles/82260.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Mon, 20 Nov 2006 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/82260.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/82260.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/82260.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/82260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/82260.html</trackback:ping><description><![CDATA[<div id=msgcns!ab2aa80c6592e82!390>
<div>最近要做一个在jboss下的项目，jboss版本为jboss-4.0.5.GA。</div>
<div>因为以前没有使用过jboss,为了更好的了解它，就从网上找了一个小例子，很经典的HelloWorld.</div>
<div>&nbsp;</div>
<div><strong>一、安装所需软件</strong> <br>1、 安装 SDK 到 D:\Program Files\Java\jdk1.5.0_07;方法为：双击执行下载的 jdk文件，选择安装目录为 D:\Program Files\Java\jdk1.5.0_07，其它默认即可。 </div>
<div>2、 安装 JBOSS ；方法为：将下载的 jboss-4.0.5.GA.zip文件解压到任意一个目录，解压后会在此目录中产生一个 jboss-4.0.5.GA文件夹，在此文件夹下有一系列的文件和文件夹。然后在 C 盘根目录下建一个 JBOSS 目录，并将刚才解压后 jboss-4.0.5.GA文件夹下的一系列文件和文件夹全都拷贝到 C ： \JBOSS 目录下。即将 JBOSS 安装到了 C:\JBOSS 目录中。 </div>
<div>&nbsp;</div>
<div><strong>二、配置运行环境及测试程序目录</strong> <br>一、设置环境变量 </div>
<div>1、 设置 JAVA_HOME 系统变量：在 windows 下方法为，在桌面上右键点击&#8220;我的电脑&#8221;，选择属性，然后在弹出的页面上点&#8220;高级&#8221; -&gt; &#8220;环境变量&#8221;，然后在弹出的页面中&#8220;系统变量&#8221;下点击&#8220;新建&#8221;，然后在弹出的窗口中&#8220;变量名 (N) 输入&#8220; JAVA_HOME &#8221;，在&#8220;变量值 (V) &#8221;一栏中输入&#8220;D:\Program Files\Java\jdk1.5.0_07&#8221;。 </div>
<div>2、 以同样的方法设置： JBOSS_HOME 值为： C:\JBOSS </div>
<div>3、 以同样的方法在上面地方将 Path 的值后追加：以下内容：&#8220; D:\Program Files\Java\jdk1.5.0_07;C:\JBOSS\bin &#8221; </div>
<div>二、创建程序目录 </div>
<div>1、 在 C:\JBOSS 下新建一个 myproject 目录，用于存放自己的所有项目。 </div>
<div>2、 在 myproject 目录下新建三个目录：一个是 jsp 目录，其下用于存放所有的 jsp 文件和 servlet 文件及其它的 html ， image 文件等；一个是 ejb 目录，用于存放所有即将发布的 EJB 类文件；一个是 src 目录，用于存放所有的 java 源文件。 </div>
<div>3、 在 jsp 目录下新建一个目录，并命名为： hello.war ，用来发布 WEB 程序，然后再在此目录下新建一系列文件夹：即在 hello.war 下新建 WEB-INF （大写）文件夹，再在 WEB-INF 下新建 classes 文件夹，再在 classes 文件夹下新建一个 hello 文件夹。 </div>
<div>4、 在 ejb 目录下新建一个 client 目录和一个 hello.jar 目录，分别用于存放 EJB 客户端和要发布的服务器端类。然后再在 client 目录下新建一个 hello 目录，再在此目录下新建一个 ejb 目录。然后在 hello.jar 目录下新建一个 hello 目录和一个 META-INF( 大写 ) 目录，并在 hello 目录中新建一个 ejb 目录。 </div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><strong>三、编写测试程序及相关脚本</strong> <br><font color=#800080>一、 测试 JBOSS 安装成功与否</font> </div>
<div>方法如下：进入 C ： \JBOSS 目录中，执行 run.bat &#8211;c all 启动具有全部功能的 JBOSS 配置服务器。屏幕经过一会滚动后不再滚动。这时启动 IE 输入： <a href="http://localhost:8080/jmx-console/index.jsp"><font color=#b32302>http://localhost:8080/jmx-console/index.jsp</font></a> 即可看到 IE 中出现一系列列表，即表明 JBOSS 启动成功。此时可在启动 JBOSS 的 DOS 窗口上按 Ctrl+C 关闭 JBOSS 服务器。 </div>
<div><font color=#800080>二、 进入 C:\JBOSS\myproject\jsp\hello.war 目录中，用记事本新建一个 index.jsp 文件，内容如下</font> </div>
<div>用于测试 jsp 程序 </div>
<div>&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#37;&#64;&#112;&#97;&#103;&#101;"><font color=#b32302>%@page</font></a> contentType="text/html; charset=gb2312"%&gt; </div>
<div>&lt;html&gt; </div>
<div>&lt;head&gt; </div>
<div>&lt;title&gt;&lt;/title&gt; </div>
<div>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; </div>
<div>&lt;/head&gt; </div>
<div>&lt;body bgcolor="#FFFFFF" text="#000000" topmargin="5"&gt; </div>
<div>&lt;% </div>
<div>String hello = "Hello world!this created by jsp file!"; </div>
<div>out.println(hello); </div>
<div>%&gt; </div>
<div>&lt;/body&gt; </div>
<div>&lt;/html&gt; </div>
<div><font color=#800080>三、 进入 C:\JBOSS\myproject\src 目录，新建一个 HelloWorld.java ，是一个 Servlet 类，内容如下</font>： </div>
<div>package hello; </div>
<div>import java.io.*; </div>
<div>import javax.servlet.*; </div>
<div>import javax.servlet.http.*; </div>
<div>public class HelloWorld extends HttpServlet </div>
<div>{ </div>
<div>public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException </div>
<div>{ </div>
<div>response.setContentType("text/html"); </div>
<div>PrintWriter out = response.getWriter(); </div>
<div>out.println("&lt;hr&gt;"); </div>
<div>out.println("Hello World! This is created by Servlet!"); </div>
<div>out.println("&lt;hr&gt;"); </div>
<div>} </div>
<div>} </div>
<div>到此，我们就建立好了用于测试的 JSP 文件和 Servlet 类，下面将建 HelloWorld 的无状态 SessionBean 。 </div>
<div><font color=#800080>四、 进入 C:\JBOSS\myproject\src 目录，新建一个 Hello.java 文件，以实现 EJB 的 Remote 接口，内容如下，</font> </div>
<div>package hello.ejb; </div>
<div>/** </div>
<div>* Remote interface for Enterprise Bean: Hello </div>
<div>* Remote 接口 </div>
<div>*/ </div>
<div>public interface Hello extends javax.ejb.EJBObject { </div>
<div>/** </div>
<div>* 唯一的方法 hello ，向客户端返回问候。 </div>
<div>*/ </div>
<div>public String hello() throws java.rmi.RemoteException; </div>
<div>} </div>
<div>同样在此目录中新建一个 HelloLocal.java 文件，实现 Local 接口，内容如下： </div>
<div>package hello.ejb; </div>
<div>import javax.ejb.EJBLocalObject; </div>
<div>public interface HelloLocal extends EJBLocalObject { </div>
<div>public String hello(); </div>
<div>} </div>
<div>同样在此目录中新建一个 HelloHome.java 文件，实现 Home 接口，内容如下： </div>
<div>package hello.ejb; </div>
<div>/** </div>
<div>* Home interface for Enterprise Bean: Hello </div>
<div>* Home 接口 </div>
<div>*/ </div>
<div>public interface HelloHome extends javax.ejb.EJBHome{ </div>
<div>/** </div>
<div>* Creates a default instance of Session Bean: Hello </div>
<div>*/ </div>
<div>public Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException; </div>
<div>} </div>
<div>同样在此目录中新建一个 HelloLocalHome.java 文件，实现 LocalHome 接口，内容如下： </div>
<div>package hello.ejb; </div>
<div>import javax.ejb.EJBLocalHome; </div>
<div>public interface HelloLocalHome extends EJBLocalHome { </div>
<div>HelloLocal create() throws javax.ejb.CreateException; </div>
<div>} </div>
<div>同样在此目录中新建一个 HelloBean.java ，实现 EJB 类，内 [ 容如下： </div>
<div>package hello.ejb; </div>
<div>/** </div>
<div>* Bean implementation class for Enterprise Bean: Hello </div>
<div>*/ </div>
<div>public class HelloBean implements javax.ejb.SessionBean{ </div>
<div>private javax.ejb.SessionContext mySessionCtx; </div>
<div>/** </div>
<div>* getSessionContext </div>
<div>*/ </div>
<div>public javax.ejb.SessionContext getSessionContext(){ </div>
<div>return mySessionCtx; </div>
<div>} </div>
<div>/** </div>
<div>* setSessionContext </div>
<div>*/ </div>
<div>public void setSessionContext(javax.ejb.SessionContext ctx){ </div>
<div>mySessionCtx = ctx; </div>
<div>} </div>
<div>/** </div>
<div>* ejbActivate </div>
<div>*/ </div>
<div>public void ejbActivate(){ </div>
<div>} </div>
<div>/** </div>
<div>* ejbCreate </div>
<div>*/ </div>
<div>public void ejbCreate() throws javax.ejb.CreateException{ </div>
<div>} </div>
<div>/** </div>
<div>* ejbPassivate </div>
<div>*/ </div>
<div>public void ejbPassivate(){ </div>
<div>} </div>
<div>/** </div>
<div>* ejbRemove </div>
<div>*/ </div>
<div>public void ejbRemove(){ </div>
<div>} </div>
<div>/** </div>
<div>* 商务方法 </div>
<div>*/ </div>
<div>public String hello(){ </div>
<div>return "Hello,World! this is created by EJB!"; </div>
<div>} </div>
<div>} </div>
<div>至此，我们己经将 EJB 类所需的所有的所有类编写好了，下面我们编写用于测试此 EJB 程序的文件，具体来说有两个：一个是用客户端 Servlet 来调用 EJB ，另一个是用客户端类来调用 EJB 。实现如下： </div>
<div><font color=#800080>五、 实现测试 EJB 的程序</font> </div>
<div>进入 C:\JBOSS\myproject\src 目录中，新建一个 HelloServlet.java 文件，用于测试通过 Servlet 调用 EJB 。内容如下： </div>
<div>package hello; </div>
<div>import javax.servlet.*; </div>
<div>import javax.servlet.http.*; </div>
<div>import java.io.*; </div>
<div>import javax.ejb.*; </div>
<div>import javax.naming.InitialContext; </div>
<div>import javax.naming.Context; </div>
<div>import hello.ejb.*; </div>
<div>import java.util.*; </div>
<div>public class HelloServlet extends HttpServlet </div>
<div>{ </div>
<div>private HelloHome home; </div>
<div>public void init() throws ServletException </div>
<div>{ </div>
<div>try </div>
<div>{ </div>
<div>String initCtxFactory = getInitParameter(Context.INITIAL_CONTEXT_FACTORY); </div>
<div>String providerURL = getInitParameter(Context.PROVIDER_URL); </div>
<div>Properties env = new Properties(); </div>
<div>if(initCtxFactory!=null) </div>
<div>{ </div>
<div>env.put(Context.INITIAL_CONTEXT_FACTORY,initCtxFactory); </div>
<div>} </div>
<div>if(providerURL!=null) </div>
<div>{ </div>
<div>env.put(Context.PROVIDER_URL,providerURL); </div>
<div>} </div>
<div>Context ctx=new InitialContext(env); </div>
<div>Object objRef = ctx.lookup("Hello"); </div>
<div>// 主接口 </div>
<div>home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(objRef,hello.ejb.HelloHome.class); </div>
<div>}catch(javax.naming.NamingException ne){ </div>
<div>System.out.println("Create Exception caught:"+ne); </div>
<div>throw new ServletException(ne.toString()); </div>
<div>}catch(Exception e) </div>
<div>{ </div>
<div>throw new ServletException(e.toString()); </div>
<div>} </div>
<div>} </div>
<div>public void service(HttpServletRequest req,HttpServletResponse res) throws IOException </div>
<div>{ </div>
<div>res.setContentType("text/html"); </div>
<div>PrintWriter out =res.getWriter(); </div>
<div>out.println("&lt;html&gt;&lt;head&gt;&lt;title&gt;the first EJB&lt;/title&gt;&lt;/head&gt;"); </div>
<div>try{ </div>
<div>// 组件接口 </div>
<div>Hello bean=home.create(); </div>
<div>out.println(bean.hello()); </div>
<div>}catch(javax.ejb.CreateException ce){ </div>
<div>out.println("Create Exception caught:"+ce); </div>
<div>ce.printStackTrace(out); </div>
<div>}catch(java.rmi.RemoteException re){ </div>
<div>out.println("Remote Exception caught:"+re); </div>
<div>re.printStackTrace(out); </div>
<div>} </div>
<div>out.println("&lt;/body&gt;&lt;/html&gt;"); </div>
<div>} </div>
<div>} </div>
<div>同样在此目录中，新建一个 HelloClient.java 文件，用于通过客户端类测试 EJB ，内容如下： </div>
<div>package hello.ejb; </div>
<div>import java.util.*; </div>
<div>import java.io.*; </div>
<div>import javax.naming.InitialContext; </div>
<div>import javax.rmi.PortableRemoteObject; </div>
<div>import javax.naming.Context; </div>
<div>import javax.rmi.PortableRemoteObject; </div>
<div>import hello.ejb.*; </div>
<div>public class HelloClient </div>
<div>{ </div>
<div>public static void main(String[] args) </div>
<div>{ </div>
<div>try </div>
<div>{ </div>
<div>//jndi 配置 , 应实现为外部属性文件 </div>
<div>Properties env = new Properties(); </div>
<div>//config.properties 文件应该放在和 hello 包目录所在目录的同级目录中。即它和 hello 文件夹同在一个文件夹中。 </div>
<div>env.load(new FileInputStream("config.properties")); </div>
<div>// Get a naming context </div>
<div>System.out.println(env); </div>
<div>InitialContext ctx = new javax.naming.InitialContext(env); </div>
<div>System.out.println("Got context"); </div>
<div>// Get a reference to the Interest Bean </div>
<div>//jboss 默认 jndi 名为 ejb-jar.xml 中的 :ejb-name </div>
<div>Object ref = ctx.lookup("Hello"); </div>
<div>System.out.println("Got reference"); </div>
<div>// Get a reference from this to the Bean"s Home interface </div>
<div>HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref, HelloHome.class); </div>
<div>// Create an Hello object from the Home interface </div>
<div>Hello hello = home.create(); </div>
<div>// call the hello() method </div>
<div>System.out.println(hello.hello()); </div>
<div>}catch(Exception e) </div>
<div>{ </div>
<div>System.out.println(e.toString()); </div>
<div>} </div>
<div>} </div>
<div>} </div>
<div>然后，我们还需增加一个此客户端程序运行时所需的 JNDI 配置文件。方法如下： </div>
<div>进入 : C:\JBOSS\myproject\ejb\client 目录，用记事本新建一个 config.properties 文件，内容如下三行： </div>
<div>java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory </div>
<div>java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces </div>
<div>java.naming.provider.url=jnp://localhost:1099 </div>
<div><font color=#800080>六、 编写服务器端的配置文件，</font> </div>
<div>首先进入 C:\JBOSS\myproject\jsp\hello.war\WEB-INF 目录，用记事本创建一个 web.xml 文件，用于配置 servlet ，内容如下： </div>
<div>&lt;?xml version="1.0" encoding="gb2312"?&gt; </div>
<div>&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<a href="http://java.sun.com/dtd/web-app_2_3.dtd"><font color=#b32302>http://java.sun.com/dtd/web-app_2_3.dtd</font></a>"&gt; </div>
<div>&lt;web-app&gt; </div>
<div>&lt;servlet&gt; </div>
<div>&lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt; </div>
<div>&lt;display-name&gt;HelloWorld&lt;/display-name&gt; </div>
<div>&lt;servlet-class&gt;hello.HelloWorld&lt;/servlet-class&gt; </div>
<div>&lt;/servlet&gt; </div>
<div>&lt;servlet&gt; </div>
<div>&lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt; </div>
<div>&lt;display-name&gt;HelloServlet&lt;/display-name&gt; </div>
<div>&lt;servlet-class&gt;hello.HelloServlet&lt;/servlet-class&gt; </div>
<div>&lt;/servlet&gt; </div>
<div>&lt;servlet-mapping&gt; </div>
<div>&lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt; </div>
<div>&lt;url-pattern&gt;/HelloWorld&lt;/url-pattern&gt; </div>
<div>&lt;/servlet-mapping&gt; </div>
<div>&lt;servlet-mapping&gt; </div>
<div>&lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt; </div>
<div>&lt;url-pattern&gt;/HelloServlet&lt;/url-pattern&gt; </div>
<div>&lt;/servlet-mapping&gt; </div>
<div>&lt;/web-app&gt; </div>
<div>然后进入 C:\JBOSS\myproject\ejb\hello.jar\META-INF 目录，创建一个 ejb-jar.xml 文件，内容如下： </div>
<div>&lt;?xml version="1.0" encoding="gb2312"?&gt; </div>
<div>&lt;!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" </div>
<div>"<a href="http://java.sun.com/dtd/ejb-jar_2_0.dtd"><font color=#b32302>http://java.sun.com/dtd/ejb-jar_2_0.dtd</font></a>"&gt; </div>
<div>&lt;ejb-jar&gt; </div>
<div>&lt;description&gt;This is Hello EJB example&lt;/description&gt; </div>
<div>&lt;display-name&gt;helloeEJB&lt;/display-name&gt; </div>
<div>&lt;enterprise-beans&gt;</div>
<div>&lt;session&gt; </div>
<div>&lt;display-name&gt;Hello&lt;/display-name&gt; </div>
<div>&lt;ejb-name&gt;Hello&lt;/ejb-name&gt; </div>
<div>&lt;home&gt;hello.ejb.HelloHome&lt;/home&gt; </div>
<div>&lt;remote&gt;hello.ejb.Hello&lt;/remote&gt; </div>
<div>&lt;local-home&gt;hello.ejb.HelloLocalHome&lt;/local-home&gt; </div>
<div>&lt;local&gt;hello.ejb.HelloLocal&lt;/local&gt; </div>
<div>&lt;ejb-class&gt;hello.ejb.HelloBean&lt;/ejb-class&gt; </div>
<div>&lt;session-type&gt;Stateless&lt;/session-type&gt; </div>
<div>&lt;transaction-type&gt;Container&lt;/transaction-type&gt; </div>
<div>&lt;/session&gt; </div>
<div>&lt;/enterprise-beans&gt; </div>
<div>&lt;/ejb-jar&gt; </div>
<div>在此目录中，再建一个 jboss-service.xml 文件，内容如下： </div>
<div>&lt;?xml version="1.0" encoding="gb2312"?&gt; </div>
<div>&lt;jboss&gt; </div>
<div>&lt;enterprise-beans&gt; </div>
<div>&lt;session&gt; </div>
<div>&lt;ejb-name&gt;Hello&lt;/ejb-name&gt; </div>
<div>&lt;jndi-name&gt;Hello&lt;/jndi-name&gt; </div>
<div>&lt;/session&gt; </div>
<div>&lt;secure&gt;true&lt;/secure&gt; </div>
<div>&lt;/enterprise-beans&gt; </div>
<div>&lt;reource-managers/&gt; </div>
<div>&lt;/jboss&gt; </div>
<div><font color=#800080>七、 到此为止，我们将所有的测试文件和配置文件己编写完成。</font> </div>
<div><font color=#800080>八、 下面我们编写编译这些类文件的脚本程序</font> </div>
<div>进入 C:\JBOSS\BIN 目录下，新建一个 com.bat 文件，内容如下： </div>
<div>set classpath=.;c:\j2sdk1.4.2_06\lib\tools.jar;C:\JBOSS\client\jbossall-client.jar;C:\JBOSS\client\jboss-client.jar;C:\JBOSS\client\jboss-iiop-client.jar;C:\JBOSS\server\default\lib\jnpserver.jar;C:\JBOSS\client\jnp-client.jar;C:\JBOSS\client\log4j.jar;C:\JBOSS\client\jboss-j2ee.jar; C:\JBOSS\server\all\lib\javax.servlet.jar </div>
<div>javac %1 </div>
<div>同样在此目录新建一个 runclient.bat ，用于运行客户端程序，内容如下： </div>
<div>set classpath=.;c:\j2sdk1.4.2_06\lib\tools.jar;C:\JBOSS\client\jbossall-client.jar;C:\JBOSS\client\jboss-client.jar;C:\JBOSS\client\jboss-iiop-client.jar;C:\JBOSS\server\default\lib\jnpserver.jar;C:\JBOSS\client\jnp-client.jar;C:\JBOSS\client\log4j.jar;C:\JBOSS\client\jboss-j2ee.jar; C:\JBOSS\server\all\lib\javax.servlet.jar </div>
<div>java %1 </div>
<div>&nbsp;</div>
<div><strong>四、编译和运行测试程序</strong> <br>1、 进入 C:\JBOSS\myproject\src 目录中，运行 : </div>
<div>com *.java </div>
<div>将产生一系列 .class 文件。 </div>
<div>2、 将产生的 HelloWorld.class 和 HelloServlet.class 拷贝到 C:\JBOSS\myproject\jsp\hello.war\WEB-INF\classes\hello 目录中。 </div>
<div>3、 将产生的 HelloHome.class 和 HelloClient.class 和 Hello.class 文件放入 C:\JBOSS\myproject\ejb\client\hello\ejb 目录中 </div>
<div>4、 将产生的 Hello.class 和 HelloBean.class 和 HelloHome.class 和 HelloLocal.class 和 HelloLocalHome.class 放入 C:\JBOSS\myproject\ejb\hello.jar\hello\ejb 目录中。 </div>
<div>至此，我们己经完成了所有类的编译，并将它们放入到适当的地方，目前为止，文件和目录分布结构如下图所示：</div>
<div>这时，我们将 myproject 下 ejb 目录中的 hello.jar 目录和 jsp 下的 hello.war 目录拷贝到 </div>
<div>C:\JBOSS\server\all\deploy 下。 </div>
<div>这时启动 JBOSS 的工作台自动会发布此两个目录。我们便可以测试了。 </div>
<div>启动 JBOSS ： </div>
<div>run.bat &#8211;c all </div>
<div>用 IE 打开 <a href="http://localhost:8080/hello/index.jsp"><font color=#b32302>http://localhost:8080/hello/index.jsp</font></a> 测试 JSP 文件 </div>
<div>用 IE 打开 <a href="http://localhost:8080/hello/HelloWorld"><font color=#b32302>http://localhost:8080/hello/HelloWorld</font></a> 测试 Serlvet </div>
<div>用 IE 打开 <a href="http://localhost:8080/hello/HelloServlet"><font color=#b32302>http://localhost:8080/hello/HelloServlet</font></a> 测试用 Servlet 调用 EJB </div>
<div>然后进入 </div>
<div>C:\JBOSS\myproject\ejb\client 运行： </div>
<div>Runclient hello/ejb/HelloClient</div>
</div>
<img src ="http://www.blogjava.net/topquan/aggbug/82260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-11-20 14:51 <a href="http://www.blogjava.net/topquan/articles/82260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>