您的位置:首页 > 移动开发

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

2006-10-12 14:20 495 查看
这是花了我进一个礼拜的时间搞出来的,感觉还是很爽的。

  在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中
4000
的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()方法放到页面的表上,表的外围为蓝色时松开鼠标,现在就可以运行测试了。
 
此部分参照http://developers.sun.com/prodtech/javatools/jscreator/learning/bookshelf/index.jsp
《Java Studio Creator Field Guide》的第11章 using ejb components
 
[align=left]上面说的元素类的问题,我按照11.5 Adding EJBs to Creator 这一节的例子来做时也是过不去。[/align]
[align=left]Table 11.3 EJB Method Configuration for LoanEJB[/align]
[align=left]Method Name Element Class Parameter Name[/align]
[align=left]annualAmortTable asg.LoanEJB.PaymentVO loanVO[/align]
[align=left]monthlyAmortTable asg.LoanEJB.PaymentVO loanVO[/align]
[align=left]monthlyPayment not applicable loanVO[/align]
[align=left]大家可以试一下。[/align]
 
至此,JB下开发的ejb在Jscs下调用成功!
遗留的两个问题是:
1) session bean的方法返回为ArrayList时,在Jscs下添加元素类的时候如何处理?
2) 表名或者表中字段如果带有下划线的话,在JB中开发过程中自动将下划线去掉,其对应关系在jbosscmp-jdbc.xml文件中,部署到Appserver时,Appserver自动生成一个sun-cmp-mappings.xml,这里面的下划线没有了,造成字段或者表名错误,这个问题难道只能用字段或者表名中不带下划线的方法解决?
 
四、将Jscs开发的前端的war包部署到Jboss下
继续研究 

(待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐