Eclipse快速上手EJB -- 4. 多对多的单向关系的C

系统 1665 0

这个系列文章我是根据 Rick Hightower 发表在 IBM 网站的文章 EJB - CMP/CMR 介绍》 改编而成的,这是一个系列,共有4篇文章。这篇文章综合了那4篇文章,看这篇文章前一定要参考一下,这样理解起来很方便,不过我做了部分修改,原理基本还是不变的。关于 CMP 方面的知识我不说了,我这里只是介绍如何使用 Lomboz 和 JBoss-IDE 在Eclipse 中开发 CMP。
这篇文章主要讲述如何开发多对多的单向联系,这里设计了一个RoleBean,和UserBean建立联系,由UserBean控制RoleBean。重点放在如何使用XDoclet建立多对多的单向联系,客户端的调用比较简单。
这篇文章是由《 Eclipse快速上手EJB -- 2. 设计一个实体Bean 》、《 Eclipse快速上手EJB -- 3. 设计一对一的双向关系的CMR(1) 》延伸而来。所以,必须要有这两篇文章的基础才行
关于环境配置、使用技巧还是要参考我以前的文章,这里尽量省略。
一、设计实体Bean :RoleBean
1. 建立主体部分:
在 CMP_Sample 项目中,右击“src” ->新建 ->Lomboz EJB Creation Wizard :
· 包(K) :javamxj.ejb.cmp
· 名称(M): Role
· EJB Type:选择ContainerManaged EntityEJB
点击下一步。
● Schema Name: RoleSchema
Table Name: RoleTable
增加一个 name 栏:
· Field: name
· Field Type: java.lang.String
· Database Column: 权限名称
· SQL Type: varchar
并且使它成为主键
同样,再增加一个 description 栏:
· Field: description
· Field Type: java.lang.String
· Database Column: 权限描述
· SQL Type: varchar
效果如下,最后点击完成。
注意 :如上篇文章一样,将生成代码中的 sql-type="varchar" 改写成 sql-type="varchar(xy)" ,xy是一个合适的VARCHAR 的位数。
2. 完成 ejbCreate 和 ejbPostCreate 方法:
3. 在类标记中加入以下标记:
下面给出了RoleBean.java的完整的源代码:

RoleBean.java

                              
                                /*
                              
                              
                                 * 创建日期 2005-1-25
                              
                              
                                 *
                              
                              
                                 * 作者:javamxj(分享java快乐)
                              
                              
                                 */
                              
                              
                                package
                              
                              
                                 javamxj
                              
                              
                                .
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                cmp
                              
                              
                                ;
                              
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                                 <!
                              
                              
                                -
                              
                              
                                -
                              
                              
                                 begin
                              
                              
                                -
                              
                              
                                user
                              
                              
                                -
                              
                              
                                doc 
                              
                              
                                -
                              
                              
                                -
                              
                              
                                > You can insert your documentation for '
                              
                              
                                <em>
                              
                              
                                <b>
                              
                              
                                RoleBean
                              
                              
                                </b>
                              
                              
                                </em>
                              
                              
                                '. <!
                              
                              
                                -
                              
                              
                                -
                              
                              
                                 end
                              
                              
                                -
                              
                              
                                user
                              
                              
                                -
                              
                              
                                doc 
                              
                              
                                -
                              
                              
                                -
                              
                              
                                > 
                              
                              
                                *
                              
                              
                              
                              
                                 <!
                              
                              
                                -
                              
                              
                                -
                              
                              
                                  begin
                              
                              
                                -
                              
                              
                                lomboz
                              
                              
                                -
                              
                              
                                definition 
                              
                              
                                -
                              
                              
                                -
                              
                              
                                >
                              
                              
                                 <?xml version="
                              
                              
                                1.0
                              
                              
                                " encoding="UTF
                              
                              
                                -
                              
                              
                                8
                              
                              
                                "?>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                EJB xmlns
                              
                              
                                :
                              
                              
                                j2ee="
                              
                              
                                http://java.sun.com/xml/ns/j2ee
                              
                              
                                " xmlns
                              
                              
                                :
                              
                              
                                lomboz="
                              
                              
                                http://lomboz.objectlearn.com/xml/lomboz
                              
                              
                                ">
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                entity>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                entityEjb>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                display
                              
                              
                                -
                              
                              
                                name>Role<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                display
                              
                              
                                -
                              
                              
                                name>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                ejb
                              
                              
                                -
                              
                              
                                name>Role<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                ejb
                              
                              
                                -
                              
                              
                                name>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                ejb
                              
                              
                                -
                              
                              
                                class>javamxj
                              
                              
                                .
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                cmp
                              
                              
                                .
                              
                              
                                RoleBean<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                ejb
                              
                              
                                -
                              
                              
                                class>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                persistence
                              
                              
                                -
                              
                              
                                type>Container<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                persistence
                              
                              
                                -
                              
                              
                                type>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                prim
                              
                              
                                -
                              
                              
                                key
                              
                              
                                -
                              
                              
                                class>java
                              
                              
                                .
                              
                              
                                lang
                              
                              
                                .
                              
                              
                                String<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                prim
                              
                              
                                -
                              
                              
                                key
                              
                              
                                -
                              
                              
                                class>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                cmp
                              
                              
                                -
                              
                              
                                version>
                              
                              
                                2.
                              
                              
                                x<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                cmp
                              
                              
                                -
                              
                              
                                version>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                abstract
                              
                              
                                -
                              
                              
                                schema
                              
                              
                                -
                              
                              
                                name>RoleSchema<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                abstract
                              
                              
                                -
                              
                              
                                schema
                              
                              
                                -
                              
                              
                                name>
                              
                              
                                 <j2ee
                              
                              
                                :
                              
                              
                                primkey
                              
                              
                                -
                              
                              
                                field>name<
                              
                              
                                /
                              
                              
                                j2ee
                              
                              
                                :
                              
                              
                                primkey
                              
                              
                                -
                              
                              
                                field>
                              
                              
                                 <
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                entityEjb>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                fieldMappings>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                fieldName>name<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                fieldName>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                fieldType>java
                              
                              
                                .
                              
                              
                                lang
                              
                              
                                .
                              
                              
                                String<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                fieldType>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                columnName>权限名称<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                columnName>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                jdbcType>VARCHAR<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                jdbcType>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                sqlType>varchar<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                sqlType>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                readOnly>false<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                readOnly>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                primaryKey>true<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                primaryKey>
                              
                              
                                 <
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                fieldMappings>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                fieldMappings>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                fieldName>description<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                fieldName>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                fieldType>java
                              
                              
                                .
                              
                              
                                lang
                              
                              
                                .
                              
                              
                                String<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                fieldType>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                columnName>权限描述<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                columnName>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                jdbcType>VARCHAR<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                jdbcType>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                sqlType>varchar<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                sqlType>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                readOnly>false<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                readOnly>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                primaryKey>false<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                primaryKey>
                              
                              
                                 <
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                fieldMappings>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                tableName>RoleTable<
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                tableName>
                              
                              
                                 <lomboz
                              
                              
                                :
                              
                              
                                dataSourceName><
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                dataSourceName>
                              
                              
                                 <
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                entity>
                              
                              
                                 <
                              
                              
                                /
                              
                              
                                lomboz
                              
                              
                                :
                              
                              
                                EJB>
                              
                              
                                 <!
                              
                              
                                -
                              
                              
                                -
                              
                              
                                  end
                              
                              
                                -
                              
                              
                                lomboz
                              
                              
                                -
                              
                              
                                definition 
                              
                              
                                -
                              
                              
                                -
                              
                              
                                >
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                                 <!
                              
                              
                                -
                              
                              
                                -
                              
                              
                                 begin
                              
                              
                                -
                              
                              
                                xdoclet
                              
                              
                                -
                              
                              
                                definition 
                              
                              
                                -
                              
                              
                                -
                              
                              
                                >
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                bean name="Role"
                              
                              
                              
                              
                                *
                              
                              
                                 jndi
                              
                              
                                -
                              
                              
                                name="Role"
                              
                              
                              
                              
                                *
                              
                              
                                 type="CMP"
                              
                              
                              
                              
                                *
                              
                              
                                  primkey
                              
                              
                                -
                              
                              
                                field="name" 
                              
                              
                              
                              
                                *
                              
                              
                                  schema="RoleSchema" 
                              
                              
                              
                              
                                *
                              
                              
                                  cmp
                              
                              
                                -
                              
                              
                                version="
                              
                              
                                2.
                              
                              
                                x"
                              
                              
                              
                              
                                *
                              
                              
                                  view
                              
                              
                                -
                              
                              
                                type = "local"
                              
                              
                              
                              
                                *
                              
                              
                                  data
                              
                              
                                -
                              
                              
                                source=""
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                persistence 
                              
                              
                              
                              
                                *
                              
                              
                                   table
                              
                              
                                -
                              
                              
                                name="RoleTable" 
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                jboss
                              
                              
                                .
                              
                              
                                persistence 
                              
                              
                              
                              
                                *
                              
                              
                                    create
                              
                              
                                -
                              
                              
                                table = "true"
                              
                              
                              
                              
                                *
                              
                              
                                    remove
                              
                              
                                -
                              
                              
                                table = "false"
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                finder 
                              
                              
                              
                              
                                *
                              
                              
                                    query="SELECT OBJECT(a) FROM RoleSchema as a"  
                              
                              
                              
                              
                                *
                              
                              
                                    signature="java
                              
                              
                                .
                              
                              
                                util
                              
                              
                                .
                              
                              
                                Collection findAll()"  
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                pk class="java
                              
                              
                                .
                              
                              
                                lang
                              
                              
                                .
                              
                              
                                String"
                              
                              
                              
                              
                                *
                              
                              
                                 <!
                              
                              
                                -
                              
                              
                                -
                              
                              
                                 end
                              
                              
                                -
                              
                              
                                xdoclet
                              
                              
                                -
                              
                              
                                definition 
                              
                              
                                -
                              
                              
                                -
                              
                              
                                >
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                generated
                              
                              
                              
                              
                                *
                              
                              
                                */
                              
                              
                                public
                              
                              
                                abstract
                              
                              
                                class
                              
                               RoleBean 
                              
                                implements
                              
                               javax.ejb.EntityBean {
  
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                create
                              
                              
                                -
                              
                              
                                method
                              
                              
                                   */
                              
                              
                                public
                              
                               java.lang.
                              
                                String
                              
                               ejbCreate(
                              
                                String
                              
                               name, 
                              
                                String
                              
                               description) 
                              
                                throws
                              
                               javax.ejb.CreateException {
    
                              
                                // EJB 2.0 spec says return null for CMP ejbCreate methods.
                              
                              
   setName(name);
 setDescription(description);
    
                              
                                return
                              
                              
                                null
                              
                              ;
  }
  
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                                 The container invokes this method immediately after it calls ejbCreate.
                              
                              
                                   */
                              
                              
                                public
                              
                              
                                void
                              
                               ejbPostCreate(
                              
                                String
                              
                               name, 
                              
                                String
                              
                               description) 
                              
                                throws
                              
                               javax.ejb.CreateException {
  }
  
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                                 CMP Field name
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @return
                              
                              
                                 the name
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                persistent
                              
                              
                                -
                              
                              
                                field 
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                persistence
                              
                              
                              
                              
                                *
                              
                              
                                    column
                              
                              
                                -
                              
                              
                                name="权限名称"
                              
                              
                              
                              
                                *
                              
                              
                                     jdbc
                              
                              
                                -
                              
                              
                                type="VARCHAR"
                              
                              
                              
                              
                                *
                              
                              
                                     sql
                              
                              
                                -
                              
                              
                                type="varchar(
                              
                              
                                12
                              
                              
                                )"
                              
                              
                              
                              
                                *
                              
                              
                                     read
                              
                              
                                -
                              
                              
                                only="false"
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                pk
                              
                              
                                -
                              
                              
                                field 
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                interface
                              
                              
                                -
                              
                              
                                method
                              
                              
                                   */
                              
                              
                                public
                              
                              
                                abstract
                              
                               java.lang.
                              
                                String
                              
                               getName();
  
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @param
                              
                              
                                 java
                              
                              
                                .
                              
                              
                                lang
                              
                              
                                .
                              
                              
                                String the new name value
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                interface
                              
                              
                                -
                              
                              
                                method
                              
                              
                                   */
                              
                              
                                public
                              
                              
                                abstract
                              
                              
                                void
                              
                               setName(java.lang.
                              
                                String
                              
                               name);
  
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                                 CMP Field description
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @return
                              
                              
                                 the description
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                persistent
                              
                              
                                -
                              
                              
                                field 
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                persistence
                              
                              
                              
                              
                                *
                              
                              
                                    column
                              
                              
                                -
                              
                              
                                name="权限描述"
                              
                              
                              
                              
                                *
                              
                              
                                     jdbc
                              
                              
                                -
                              
                              
                                type="VARCHAR"
                              
                              
                              
                              
                                *
                              
                              
                                     sql
                              
                              
                                -
                              
                              
                                type="varchar(
                              
                              
                                30
                              
                              
                                )"
                              
                              
                              
                              
                                *
                              
                              
                                     read
                              
                              
                                -
                              
                              
                                only="false"
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                interface
                              
                              
                                -
                              
                              
                                method
                              
                              
                                   */
                              
                              
                                public
                              
                              
                                abstract
                              
                               java.lang.
                              
                                String
                              
                               getDescription();
  
                              
                                /**
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @param
                              
                              
                                 java
                              
                              
                                .
                              
                              
                                lang
                              
                              
                                .
                              
                              
                                String the new description value
                              
                              
                              
                              
                                *
                              
                              
                              
                              
                                @
                              
                              
                                ejb
                              
                              
                                .
                              
                              
                                interface
                              
                              
                                -
                              
                              
                                method
                              
                              
                                   */
                              
                              
                                public
                              
                              
                                abstract
                              
                              
                                void
                              
                               setDescription(java.lang.
                              
                                String
                              
                               description);
}

                            
好了,保存,将 RoleBean 加入到 cmpEJB 模块中,然后 lomboz -> Generate EJB Classes
4. 重点:建立 UserBean对 RoleBean 的多对多的单向联系:
· 由于这次设计的是UserBean对RoleBean的单向联系,所以只需要在UserBean中添加方法标记即可。
切换到 UserBean.java ,右击 UserBean ->J2EE ->Add CMR Relationship :
· 生成的标记如下,还需要手工添加一些@JBoss标记:
· 保存, Generate EJB Classes

Eclipse快速上手EJB -- 4. 多对多的单向关系的CMR(2)

接上篇: Eclipse快速上手EJB -- 4. 多对多的单向关系的CMR(1)

二、在UserManagementBean中添加业务方法
1. 增加一个 UserInfoLocalHome 的变量 userHome,并将它放入 ejbCreate 和 ejbPassivate 方法中。
2. 依次增加以下几个业务方法。

UserManagementBean中有关 RoleBean 的部分(很简单)

                                        
                                          //**********************************************************************
                                        
                                        
                                          //                     多对多的单向关系
                                        
                                        
                                          //**********************************************************************
                                        
                                        
                                          /**
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                           创建权限
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                           Business method
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @throws
                                        
                                        
                                           CreateException
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @
                                        
                                        
                                          ejb
                                        
                                        
                                          .
                                        
                                        
                                          interface
                                        
                                        
                                          -
                                        
                                        
                                          method view
                                        
                                        
                                          -
                                        
                                        
                                          type = "remote"
                                        
                                        
                                            */
                                        
                                        
                                          public
                                        
                                        
                                          void
                                        
                                         createRole(
                                        
                                          String
                                        
                                         roleName, 
                                        
                                          String
                                        
                                         description)
  
                                        
                                          throws
                                        
                                         CreateException {
  roleHome.create(roleName, description);
 }
 
 
                                        
                                          /**
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                           显示所有权限
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @throws
                                        
                                        
                                           FinderException
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @
                                        
                                        
                                          ejb
                                        
                                        
                                          .
                                        
                                        
                                          interface
                                        
                                        
                                          -
                                        
                                        
                                          method view
                                        
                                        
                                          -
                                        
                                        
                                          type="remote"
                                        
                                        
                                            */
                                        
                                        
                                          public
                                        
                                         ArrayList getRoles() 
                                        
                                          throws
                                        
                                         FinderException {
  ArrayList roleList = 
                                        
                                          new
                                        
                                         ArrayList(30);
  Iterator iter = roleHome.findAll().iterator();
  
                                        
                                          while
                                        
                                         (iter.hasNext()) {
   RoleLocal role = (RoleLocal) iter.next();
   roleList.add(role.getName());
  }
  
                                        
                                          return
                                        
                                         roleList;
 }
 
                                        
                                          /**
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                           删除权限
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @throws
                                        
                                        
                                           RemoveException
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @throws
                                        
                                        
                                           EJBException
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @
                                        
                                        
                                          ejb
                                        
                                        
                                          .
                                        
                                        
                                          interface
                                        
                                        
                                          -
                                        
                                        
                                          method view
                                        
                                        
                                          -
                                        
                                        
                                          type="remote"
                                        
                                        
                                            */
                                        
                                        
                                          public
                                        
                                        
                                          void
                                        
                                         removeRole(
                                        
                                          String
                                        
                                         name) 
                                        
                                          throws
                                        
                                         EJBException, RemoveException {
  roleHome.remove(name);
 }
 
                                        
                                          /**
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                           给用户增加权限
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @throws
                                        
                                        
                                           FinderException
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @
                                        
                                        
                                          ejb
                                        
                                        
                                          .
                                        
                                        
                                          interface
                                        
                                        
                                          -
                                        
                                        
                                          method view
                                        
                                        
                                          -
                                        
                                        
                                          type="remote"
                                        
                                        
                                            */
                                        
                                        
                                          public
                                        
                                        
                                          void
                                        
                                         addRole(
                                        
                                          String
                                        
                                         email, 
                                        
                                          String
                                        
                                         roleName) 
                                        
                                          throws
                                        
                                         FinderException {
  UserLocal user = userHome.findByPrimaryKey(email);
  
                                        
                                          Collection
                                        
                                         roles = user.getRoles();
  RoleLocal role = roleHome.findByPrimaryKey(roleName);
  roles.add(role);
 }
 
 
                                        
                                          /**
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                           得到某个用户拥有的权限
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @throws
                                        
                                        
                                           FinderException
                                        
                                        
                                        
                                        
                                          *
                                        
                                        
                                        
                                        
                                          @
                                        
                                        
                                          ejb
                                        
                                        
                                          .
                                        
                                        
                                          interface
                                        
                                        
                                          -
                                        
                                        
                                          method view
                                        
                                        
                                          -
                                        
                                        
                                          type="remote"
                                        
                                        
                                            */
                                        
                                        
                                          public
                                        
                                         ArrayList getUserRole(
                                        
                                          String
                                        
                                         email) 
                                        
                                          throws
                                        
                                         FinderException{
  ArrayList roleList = 
                                        
                                          new
                                        
                                         ArrayList(30);
  UserLocal user = userHome.findByPrimaryKey(email);
  Iterator iter = user.getRoles().iterator();
  
                                        
                                          while
                                        
                                         (iter.hasNext()) {
   RoleLocal role = (RoleLocal) iter.next();
   roleList.add(role.getName());
  }
  
                                        
                                          return
                                        
                                         roleList;
 }
   
                                      
3. 好了,保存, Generate EJB Classes, 启动MySql, 启动JBoss服务器, Deploy Module
如果一切正常,则会在 cmp_sample 库中自动建立两个表:roletable 和 userrole 。
role_fk 和 email_fk 是在 UserBean 中的 getRoles 的方法标记中定义的。
三、创建客户端
1. 右击 src文件夹 ->新建 ->Lomboz EJB Test Client Wizard:
创建一个 CMPClient3.java 文件 (步骤同前两篇文章一样)。
2. 修改生成的 CMPClient3.java,调用UserManagementBean中的方法。
这里给出了完整的源代码:

CMPClient3.java

                                    
                                      /*
                                    
                                    
                                       * 创建日期 2005-1-25
                                    
                                    
                                       *
                                    
                                    
                                       * 作者:javamxj(分享java快乐)
                                    
                                    
                                       */
                                    
                                    
                                      package
                                    
                                    
                                       javamxj
                                    
                                    
                                      .
                                    
                                    
                                      ejb
                                    
                                    
                                      .
                                    
                                    
                                      client
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       java
                                    
                                    
                                      .
                                    
                                    
                                      rmi
                                    
                                    
                                      .
                                    
                                    
                                      RemoteException
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       java
                                    
                                    
                                      .
                                    
                                    
                                      util
                                    
                                    
                                      .
                                    
                                    
                                      ArrayList
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       java
                                    
                                    
                                      .
                                    
                                    
                                      util
                                    
                                    
                                      .
                                    
                                    
                                      Hashtable
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       java
                                    
                                    
                                      .
                                    
                                    
                                      util
                                    
                                    
                                      .
                                    
                                    
                                      Iterator
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       javamxj
                                    
                                    
                                      .
                                    
                                    
                                      ejb
                                    
                                    
                                      .
                                    
                                    
                                      cmp
                                    
                                    
                                      .
                                    
                                    
                                      UserManagement
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       javax
                                    
                                    
                                      .
                                    
                                    
                                      ejb
                                    
                                    
                                      .
                                    
                                    
                                      CreateException
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       javax
                                    
                                    
                                      .
                                    
                                    
                                      ejb
                                    
                                    
                                      .
                                    
                                    
                                      FinderException
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       javax
                                    
                                    
                                      .
                                    
                                    
                                      naming
                                    
                                    
                                      .
                                    
                                    
                                      InitialContext
                                    
                                    
                                      ;
                                    
                                    
                                      import
                                    
                                    
                                       javax
                                    
                                    
                                      .
                                    
                                    
                                      naming
                                    
                                    
                                      .
                                    
                                    
                                      NamingException
                                    
                                    
                                      ;
                                    
                                    
                                      /**
                                    
                                    
                                    
                                    
                                      *
                                    
                                    
                                    
                                    
                                      @author
                                    
                                    
                                    
                                    
                                      pc
                                    
                                    
                                    
                                    
                                    
                                    
                                      *
                                    
                                    
                                    
                                    
                                    
                                    
                                      *
                                    
                                    
                                       TODO 要更改此生成的类型注释的模板,请转至
                                    
                                    
                                    
                                    
                                      *
                                    
                                    
                                       窗口 - 首选项 - Java - 代码样式 - 代码模板
                                    
                                    
                                       */
                                    
                                    
                                      public
                                    
                                    
                                      class
                                    
                                     CMPClient3 {
 
                                    
                                      private
                                    
                                     javamxj.ejb.cmp.UserManagementHome getHome() 
                                    
                                      throws
                                    
                                     NamingException {
  
                                    
                                      return
                                    
                                     (javamxj.ejb.cmp.UserManagementHome) getContext().lookup(
    javamxj.ejb.cmp.UserManagementHome.JNDI_NAME);
 }
 
                                    
                                      private
                                    
                                     InitialContext getContext() 
                                    
                                      throws
                                    
                                     NamingException {
  
                                    
                                      Hashtable
                                    
                                     props = 
                                    
                                      new
                                    
                                    
                                      Hashtable
                                    
                                    ();
  props.put(InitialContext.INITIAL_CONTEXT_FACTORY,
    
                                    
                                      "org.jnp.interfaces.NamingContextFactory"
                                    
                                    );
  props.put(InitialContext.PROVIDER_URL, 
                                    
                                      "jnp://127.0.0.1:1099"
                                    
                                    );
  
                                    
                                      // This establishes the security for authorization/authentication
                                    
                                    
                                      // props.put(InitialContext.SECURITY_PRINCIPAL,"username");
                                    
                                    
                                      // props.put(InitialContext.SECURITY_CREDENTIALS,"password");
                                    
                                    
  InitialContext initialContext = 
                                    
                                      new
                                    
                                     InitialContext(props);
  
                                    
                                      return
                                    
                                     initialContext;
 }
 
                                    
                                      public
                                    
                                    
                                      void
                                    
                                     testBean() {
  
                                    
                                      try
                                    
                                     {
   javamxj.ejb.cmp.UserManagement userMgmt = getHome().create();
   
   createUsers(userMgmt);
   
                                    
                                      System
                                    
                                    .out.println(
                                    
                                      "显示所有权限"
                                    
                                    );
   printList(userMgmt.getRoles());
   
   
                                    
                                      System
                                    
                                    .out.println(
                                    
                                      "给用户wangyi@aaa.com增加权限 "
                                    
                                    );
   userMgmt.addRole(
                                    
                                      "wangyi@aaa.com"
                                    
                                    , 
                                    
                                      color:
  
                                    
                                  
分享到:
评论
happmaoo
  • 浏览: 1291458 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最新评论

Eclipse快速上手EJB -- 4. 多对多的单向关系的CMR


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论