我有一个书上的例子,我可以给你
不过我也想知道,如何用jb来开发cmp

解决方案 »

  1.   

    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是什么东东
       不过,跨出了第一步 ... ...
      

  2.   

    老兄很厉害嘛,
    我现在都不准备用这个开发,我开始把sessionbean和消息bean搞了再说
      

  3.   

    我比较惧怕cmp,看看我就很怕