Sun java studio creator+Sun java application server 8.2+ Jbuilder2005+Jboss4.0.4+Ms sql server2000开发部署要领

这是花了我进一个礼拜的时间搞出来的,感觉还是很爽的。

  在Sun java studio creator2.1(以下简称Sjsc)中开发表现层,使用Jbuilder2005 (以下简称JB)+ Jboss4.04(以下简称Jboss)开发Ejb(Session Beans & Entity Beans),最后系统部署到Jboss4.0.4上。

由于Sjsc中无法连接Jboss,所以需要将Ejb部署到Sun java application server8.2(以下简称Appserver),Sjsc中添加Session Beans并调用其方法。
       这样做的目的是充分利用Sjsc开发表现层快速的优点,以及JB开发Ejb快速的优点。
 
一、   JB+Jboss 开发Ejb
由于大多数JB的书籍中都有介绍,这里不再赘述。但是要注意修改jbosscmp-jdbc.xml
文件中的<datasource>为java:/MSSQLDS,ejb-modeler-schema.xml中的< schema-connection-node >的name值为"java:/MSSQLDS"。
       注意:表名及字段中不能带有下划线,在Jboss下部署的实体bean能够找到对应关系,但部署到Appserver后,生成的表名称会与原来的差一个下划线。
下面主要谈一下部署到Appserver上时需要的sun-ejb-jar.xml修改。
       开发比测试完Ejb后,打成jar包,将ejbmodule_dir / META-INF下jboss.xml文件复制一份并修改文件名为sun-ejb-jar.xml,打开此xml文件,按如下方式修改(需要修改的地方我使用“ $......$ 需要修改”进行标注,中间部分是需要修改的)
 
$<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 EJB 2.1//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_2_1-1.dtd">  $ 需要修改
$<sun-ejb-jar>  $ 需要修改
 <enterprise-beans>
    $<ejb>$ 需要修改
      <ejb-name>Test</ejb-name>
      $<jndi-name>ejb/Test</jndi-name>
      <pass-by-reference>false</pass-by-reference>
      <cmp/>
      <ior-security-config>
        <transport-config>
          <integrity>SUPPORTED</integrity>
          <confidentiality>SUPPORTED</confidentiality>
          <establish-trust-in-target>SUPPORTED</establish-trust-in-target>
          <establish-trust-in-client>SUPPORTED</establish-trust-in-client>
        </transport-config>
        <as-context>
          <auth-method>USERNAME_PASSWORD</auth-method>
          <realm>default</realm>
          <required>false</required>
        </as-context>
        <sas-context>
          <caller-propagation>SUPPORTED</caller-propagation>
        </sas-context>
      </ior-security-config>
      <is-read-only-bean>false</is-read-only-bean>     
      <gen-classes/>
    </ejb>$ 需要修改
    $<ejb>$ 需要修改
      <ejb-name>TestSession</ejb-name>
      <jndi-name>ejb/TestSession</jndi-name>
    $</ejb>
    <cmp-resource>  这一部分是 Entity bens 连接数据库的信息,在后边的连接池部分需要使用 <jndi-name> 项、 <database-vendor-name>
      <jndi-name>jdbc/MSSQLDS</jndi-name>
      <create-tables-at-deploy>false</create-tables-at-deploy>
      <drop-tables-at-undeploy>false</drop-tables-at-undeploy>
      <database-vendor-name>mssql</database-vendor-name>
      <!--<database-vendor-name>pointbase</database-vendor-name>-->
    </cmp-resource>$ 需要修改
 </enterprise-beans>
$</sun-ejb-jar> $ 需要修改
 
修改完成后,在JB下重新打成jar包。
二、   部署Ejb 到Appserver
1、创建连接池
启动Appserver,并登陆控制台,资源->jdbc->连接池下新增,数据源类输入:
com.sun.sql.jdbcx.sqlserver.SQLServerDataSource(这是sun自己的驱动,不用ms sql的驱动,在appserver_dir/lib有这三个文件smbase.jar,smsqlserver.jar,smutil.jar),资源类型选择 javax.sql.DataSource,添加如下四个属性:user (ms sql server的用户名),password(密码),url(jdbc:microsoft:sqlserver://#host:1433;DatabaseName=#database;SelectMethod=cursor),serverName(数据库服务器名),保存属性。
 
此部分参考http://docs.sun.com/app/docs/doc/819-2556/6n4rap8sl?a=view#beana
       2、创建数据源
       资源->jdbc->jdbc资源新增一项,名称为 jdbc/MSSQLDS(如果修改的话,要相应的修改Entity beans中的cmp-resource项下的jndi-name),选择连接池为第一步创建的连接池。
3、ping连接池
       重新启动Appserver服务器,选择上面创建的连接池,点击ping,现在应该显示“ping成功”,如果出现问题,最好查阅一下server.log,看一下具体是什么错误。
       4、部署Ejb
       应用程序->ejb模块,点击部署,选择ejb的jar包,所有想全部默认,下一步,如果没有问题的话,ejb应该部署成功,如果有错误,参见错误信息处理,一般这一步出问题最多的是在sun –ejb-jar.xml文件中,例如<ejb><ejb>后面漏掉结束符/等。
三、   Sjsc 中调用Ejb 进行页面开发
1、 在Sjsc中添加session bean
由于Sjsc中不能直接调用entity bean,所以实现的方法都应该写到session bean中。
服务器->Enterprise java bean,右键单击,选择添加会话ejb集,此处需要注意修改RMI-IIOP端口为24700,添加客户端jar(如果在Appserver下ejb部署成功的话,在Appserver_dir/domains/creator/applications/j2ee-modules/ejbMoudle下自动生成客户端jar文件,我机器上使用的是与Sjsc捆绑的Appserver,如果单独安装的Appserver的话,此文件应该在Appserver_dir/domains/domain1/applications/j2ee-modules/ejbMoudle下),点击下一步。
现在需要配置ejb的方法的参数,定义输入参数及输出参数即可。此处目前我还有一个问题没有解决,如果ejb的方法返回arraylist的话,定义完元素类后一直提示错误,我的元素类定义的应该没有问题。例如:session bean中的getAll()方法返回 TestDetails的Arraylist,在这里定义了元素类为test.TestDetails,会提示出错了。我现在测试的时候将getAll()直接返回TestDetails[]来解决这个问题,如果哪位碰到并解决了此问题,希望告知,谢谢!
配置完参数后,就完成了session bean的添加工作
2、 在页面中调用session bean方法
拖拽组件面板上的基本组件中表放到页面上,然后将在服务器栏上选择刚才添加的ejb
的getAll()方法放到页面的表上,表的外围为蓝色时松开鼠标,现在就可以运行测试了。
 
《Java Studio Creator Field Guide》的第11章 using ejb components
 
上面说的元素类的问题,我按照11.5 Adding EJBs to Creator 这一节的例子来做时也是过不去。
Table 11.3 EJB Method Configuration for LoanEJB
Method Name Element Class Parameter Name
annualAmortTable asg.LoanEJB.PaymentVO loanVO
monthlyAmortTable asg.LoanEJB.PaymentVO loanVO
monthlyPayment not applicable loanVO
大家可以试一下。
 
至此,JB下开发的ejb在Jscs下调用成功!
遗留的两个问题是:
1) session bean的方法返回为ArrayList时,在Jscs下添加元素类的时候如何处理?
2) 表名或者表中字段如果带有下划线的话,在JB中开发过程中自动将下划线去掉,其对应关系在jbosscmp-jdbc.xml文件中,部署到Appserver时,Appserver自动生成一个sun-cmp-mappings.xml,这里面的下划线没有了,造成字段或者表名错误,这个问题难道只能用字段或者表名中不带下划线的方法解决?
 
四、将Jscs开发的前端的war包部署到Jboss下

继续研究 

(待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值