那为能提供一个完整的基于JBoss的CMP实体EJB实例。。。。 我有一个书上的例子,我可以给你不过我也想知道,如何用jb来开发cmp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JBoss上的第一个CMP Entity EJB (学习总结)1、环境 Win2kser MSSqlServer2k Jbuilder7 JBoss-tomcat3 jdk1.4 环境变量: a) CLASSPATH = E:\classes (MSSQLServer 的JDBC驱动程序位于这里,供JBoss用) JBoss DataSource设置 a) copy <JBoss-tomcat-home>\docs\examples\jca\mssql-service.xml 到 <JBoss-tomcat-home>\server\default\deploy\mssql-service.xml b) 修改 mssql-service.xml ,主要是设置JndiName,JDBC驱动,数据库服务器地址及用户密码。如下: <mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=LocalTxDS,name=MSSQLDS"> <attribute name="JndiName">MSSQLDS</attribute> <attribute name="ManagedConnectionFactoryProperties"> <properties> <config-property name="ConnectionURL" type="java.lang.String">jdbc:microsoft:sqlserver://10.190.72.159:1433;DatabaseName=tableparam</config-property> <config-property name="DriverClass" type="java.lang.String">com.microsoft.jdbc.sqlserver.SQLServerDriver</config-property> <config-property name="UserName" type="java.lang.String">sa</config-property> <config-property name="Password" type="java.lang.String">rjb159</config-property> </properties> </attribute> 配置成功连接池MSSQLDS,可以用下面JSP代码测试: <% javax.naming.InitialContext ctx = new InitialContext(); javax.sql.DataSource ds = (DataSource) ctx.lookup("java:/MSSQLDS"); java.sql.Connection conn = ds.getConnection(); java.sql.Statement stmt = conn.createStatement(); java.sql.ResultSet rs = stmt.executeQuery("SELECT * FROM userBase"); while ( rs.next() ) { out.println( "<br>" + rs.getString(4) + " "); } conn.close(); %> PS: JSP代码放在<JBoss-tomcat-home>\server\default\deploy\test.war\目录下,通过http://localhost:8080/test/test.jsp访问 Jbuilder设置: a) 设置数据库 添加MS Sql类库: tools -> Configure Libraries ->在User Home下添加 MSSql2k 目录.将MS提供的JDBC的3个jar文件加入其中 数据库类设置: tools -> Enterprise Setup -> Database Drives标签下将刚设好的MSSql2k加入,出现 MSSql2k.config。ok. b) JBoss+JBuilder整合 获得"JBossEntWizard3x_v2.2.1_JBuilder_7.jar"包 可以在这里:http://www.protegra.com/javagroup.html 按其说明配置: 1> copy JBossEntWizard3x_v2.2.1_JBuilder_7.jar to <Jbuilder_home>/lib/ext/ 2> 重起Jbuilder 3> 整合设置 tools -> configure servers -> 选中 JBoss 3x -> Enable Server ->设定JBoss-Home-dir -> Custom tab -> 指定JBoss的安装路径和部署路径,如:D:\jboss_tomcat; D:\jboss_tomcat\server\default\deploy -> 激活License. 阅读并Accept -> OK (ps:千万在custom tab下点ok,不要设了转到General tab 下在点ok :( ) 4> Project Server设置 Project -> [Default] Project Properties -> Server 标签 将JBoss 3x设为 Deployment 和 EJB 两项的Server c) 数据库表: 库中建一张测试表,如: CREATE TABLE [userBase] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [pwd] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL , [name_cn] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL , [dept] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_userBase] PRIMARY KEY NONCLUSTERED ( [id] ) ON [PRIMARY] ) ON [PRIMARY] GO 并加2条测试数据 d) 数据库连接: tools -> Database pilot -> 打开 Database Pilot view -> Options -> Drives tab -> Add... 输入 Drives Class: "com.microsoft.jdbc.sqlserver.SQLServerDriver" -> OK Simple URL: "microsoft:sqlserver://localhost:1433;DatabaseName=mybase" -> ok new -> 选刚add的Driver -> 修改服务器地址库名 -> ok 输入用户密码 测试。 2、用JBuilder写CMP-EJB 新建: new Project -> new EJB Module => user.userBase 加数据源: 选定userBase Module。在下面DataSources上右键 -> Import Schema From Database -> Choose Existing Connection -> 选刚建好的Connection -> 修改相关 用户名 密码 服务器地址 -> 选定 Schemas and table types 下的 All Schemas -> 填写 JNDI Name: MSSQLDS (最好和JBoss里的同名)-> OK 建EJB: -> 展开 MSSQLDS -> 选定表 userBase -> 右键 -> Creat CMP 2.0 Entity Bean -> OK -> 改 UserBase Interface 为 Remote 测试: a) -> File -> new -> Enterprise tab -> EJB Test Client -> 在Main method中: UserBaseTestClient1 client = new UserBaseTestClient1(); UserBaseRemote obj = client.getHome().findByPrimaryKey(new Integer(1)) ; System.out.println(obj.getNameCn()); b) JSP测试: copy本地Interface 和 Home interface 到 ../test.war/web-inf/user/下,然后用下面代码测试 <%@ page import="javax.naming.InitialContext,javax.naming.*,javax.rmi.PortableRemoteObject,user.*" %> <% Context ctx = new InitialContext(); Object ref = ctx.lookup("UserBaseRemote"); UserBaseRemoteHome home = (UserBaseRemoteHome) PortableRemoteObject.narrow(ref, UserBaseRemoteHome.class); UserBaseRemote obj = home.findByPrimaryKey( new Integer(1) ) ; out.print(obj.getNameCn()) ; %>3、总结 很多东西都还不知其所以然,如 Schema 概念, JBoss 的 MBean是什么东东 不过,跨出了第一步 ... ... 老兄很厉害嘛,我现在都不准备用这个开发,我开始把sessionbean和消息bean搞了再说 我比较惧怕cmp,看看我就很怕 初学hibernate遇到的问题,请帮忙解决 数据库已连上,在从表里查询数据时,遇到问题 求助:Hibernate调用存储过程 cmwap和cmnet的区别 我跟着尚学堂的视频做项目 为什么他是对的 而我有错误啊? POI读取指定列值并写入另一个表中指定列 struts2中action跳转action问题 Sun.Java.Desktop.System怎么安装 注册xml spy 在JBUILDER7中使用EJB的问题 能否推荐几本开发手机短信和互联网通讯的书? 感谢Anubis(为朋友两肋插刀,为MM插朋友两刀!!) ( 五级(中级)),来拿分!!
Win2kser MSSqlServer2k Jbuilder7 JBoss-tomcat3 jdk1.4
环境变量:
a) CLASSPATH = E:\classes (MSSQLServer 的JDBC驱动程序位于这里,供JBoss用) JBoss DataSource设置
a) copy <JBoss-tomcat-home>\docs\examples\jca\mssql-service.xml 到
<JBoss-tomcat-home>\server\default\deploy\mssql-service.xml
b) 修改 mssql-service.xml ,主要是设置JndiName,JDBC驱动,数据库服务器地址及用户密码。如下:
<mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=LocalTxDS,name=MSSQLDS">
<attribute name="JndiName">MSSQLDS</attribute>
<attribute name="ManagedConnectionFactoryProperties">
<properties>
<config-property name="ConnectionURL" type="java.lang.String">jdbc:microsoft:sqlserver://10.190.72.159:1433;DatabaseName=tableparam</config-property>
<config-property name="DriverClass" type="java.lang.String">com.microsoft.jdbc.sqlserver.SQLServerDriver</config-property>
<config-property name="UserName" type="java.lang.String">sa</config-property>
<config-property name="Password" type="java.lang.String">rjb159</config-property>
</properties>
</attribute>
配置成功连接池MSSQLDS,可以用下面JSP代码测试:
<%
javax.naming.InitialContext ctx = new InitialContext();
javax.sql.DataSource ds = (DataSource) ctx.lookup("java:/MSSQLDS");
java.sql.Connection conn = ds.getConnection(); java.sql.Statement stmt = conn.createStatement();
java.sql.ResultSet rs = stmt.executeQuery("SELECT * FROM userBase"); while ( rs.next() ) {
out.println( "<br>" + rs.getString(4) + " ");
}
conn.close();
%>
PS: JSP代码放在<JBoss-tomcat-home>\server\default\deploy\test.war\目录下,通过http://localhost:8080/test/test.jsp访问 Jbuilder设置: a) 设置数据库
添加MS Sql类库: tools -> Configure Libraries ->在User Home下添加 MSSql2k 目录.将MS提供的JDBC的3个jar文件加入其中
数据库类设置: tools -> Enterprise Setup -> Database Drives标签下将刚设好的MSSql2k加入,出现 MSSql2k.config。ok.
b) JBoss+JBuilder整合
获得"JBossEntWizard3x_v2.2.1_JBuilder_7.jar"包 可以在这里:http://www.protegra.com/javagroup.html
按其说明配置:
1> copy JBossEntWizard3x_v2.2.1_JBuilder_7.jar to <Jbuilder_home>/lib/ext/
2> 重起Jbuilder
3> 整合设置
tools -> configure servers -> 选中 JBoss 3x -> Enable Server ->设定JBoss-Home-dir -> Custom tab
-> 指定JBoss的安装路径和部署路径,如:D:\jboss_tomcat; D:\jboss_tomcat\server\default\deploy
-> 激活License. 阅读并Accept -> OK (ps:千万在custom tab下点ok,不要设了转到General tab 下在点ok :( )
4> Project Server设置
Project -> [Default] Project Properties -> Server 标签 将JBoss 3x设为 Deployment 和 EJB 两项的Server
c) 数据库表:
库中建一张测试表,如:
CREATE TABLE [userBase] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pwd] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[name_cn] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[dept] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_userBase] PRIMARY KEY NONCLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GO
并加2条测试数据 d) 数据库连接:
tools -> Database pilot -> 打开 Database Pilot
view -> Options -> Drives tab -> Add... 输入
Drives Class: "com.microsoft.jdbc.sqlserver.SQLServerDriver" -> OK
Simple URL: "microsoft:sqlserver://localhost:1433;DatabaseName=mybase" -> ok
new -> 选刚add的Driver -> 修改服务器地址库名 -> ok
输入用户密码 测试。
2、用JBuilder写CMP-EJB
新建: new Project -> new EJB Module => user.userBase
加数据源: 选定userBase Module。在下面DataSources上右键
-> Import Schema From Database -> Choose Existing Connection -> 选刚建好的Connection
-> 修改相关 用户名 密码 服务器地址
-> 选定 Schemas and table types 下的 All Schemas
-> 填写 JNDI Name: MSSQLDS (最好和JBoss里的同名)-> OK
建EJB:
-> 展开 MSSQLDS -> 选定表 userBase -> 右键 -> Creat CMP 2.0 Entity Bean -> OK
-> 改 UserBase Interface 为 Remote
测试:
a) -> File -> new -> Enterprise tab -> EJB Test Client ->
在Main method中:
UserBaseTestClient1 client = new UserBaseTestClient1();
UserBaseRemote obj = client.getHome().findByPrimaryKey(new Integer(1)) ;
System.out.println(obj.getNameCn());
b) JSP测试:
copy本地Interface 和 Home interface 到 ../test.war/web-inf/user/下,然后用下面代码测试
<%@ page import="javax.naming.InitialContext,javax.naming.*,javax.rmi.PortableRemoteObject,user.*" %>
<%
Context ctx = new InitialContext();
Object ref = ctx.lookup("UserBaseRemote");
UserBaseRemoteHome home = (UserBaseRemoteHome) PortableRemoteObject.narrow(ref, UserBaseRemoteHome.class);
UserBaseRemote obj = home.findByPrimaryKey( new Integer(1) ) ;
out.print(obj.getNameCn()) ;
%>
3、总结
很多东西都还不知其所以然,如 Schema 概念, JBoss 的 MBean是什么东东
不过,跨出了第一步 ... ...
我现在都不准备用这个开发,我开始把sessionbean和消息bean搞了再说