ejb-jar.xml代码如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
    <enterprise-beans>
        <session>
            <display-name>UserManagement</display-name>
            <ejb-name>UserManagement</ejb-name>
            <home>jsnd.UserManagementHome</home>
            <remote>jsnd.UserManagement</remote>
            <ejb-class>jsnd.UserManagementBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
        <entity>
            <display-name>Xt1</display-name>
            <ejb-name>Xt1</ejb-name>
            <local-home>jsnd.Xt1Home</local-home>
            <local>jsnd.Xt1</local>
            <ejb-class>jsnd.Xt1Bean</ejb-class>
            <persistence-type>Container</persistence-type>
            <prim-key-class>java.lang.Integer</prim-key-class>
            <reentrant>False</reentrant>
            <cmp-version>2.x</cmp-version>
            <abstract-schema-name>Xt1</abstract-schema-name>
            <cmp-field>
                <field-name>userid</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>username</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>password</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>depid</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>dwdm</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>gxsz</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>bz</field-name>
            </cmp-field>
            <cmp-field>
                <field-name>shortcut</field-name>
            </cmp-field>
            <primkey-field>userid</primkey-field>
            <ejb-local-ref>
                <description>it is a xt1</description>
                <ejb-ref-name>ejb/Xt1</ejb-ref-name>
                <ejb-ref-type>Entity</ejb-ref-type>
                <local-home>jsnd.Xt1Home</local-home>
                <local>jsnd.Xt1</local>
                <ejb-link>Xt1</ejb-link>
            </ejb-local-ref>
        </entity>
    </enterprise-beans>
    <assembly-descriptor>
        <container-transaction>
            <method>
                <ejb-name>UserManagement</ejb-name>
                <method-name>*</method-name>
            </method>
            <trans-attribute>Required</trans-attribute>
        </container-transaction>
        <container-transaction>
            <method>
                <ejb-name>Xt1</ejb-name>
                <method-name>*</method-name>
            </method>
            <trans-attribute>Required</trans-attribute>
        </container-transaction>
    </assembly-descriptor>
</ejb-jar>

解决方案 »

  1.   

    在session ejb的bean里添加了一个函数:
      private jsnd.Xt1Home getUserHome() {
        try{
         Context initial = new InitialContext();
         return (Xt1Home) initial.lookup("java:comp/env/ejb/Xt1");
         }catch(NamingException e){
           throw new EJBException("Unable to find local user home22 ",e);
        }
      }
    在session ejb的create里调用。另外我写了一个javabean调用此session ejb
      public HomeBean() {
      }
      public boolean vetifyUser(Integer userid,String password){
        UserManagementHome UsMgHome = null;
        try
        {
          InitialContext jndiContext = new InitialContext();
          Object ref  = jndiContext.lookup("java:comp/env/ejb/UserManagement");
          UsMgHome = (UserManagementHome) PortableRemoteObject.narrow(ref, UserManagementHome.class);
          System.out.print("find usermanage");
        }
        catch(NamingException e)
        {
          System.out.print("find no");
          return isLogined;
        }
        try{
          UserManagement UsMg = (UserManagement) UsMgHome.create();
          isLogined = UsMg.verifyPassword(userid,password);
        }catch(Exception e){
          System.out.print("verify error!");
        }
        return isLogined;
      }
    }
    UserManagement就是session ejb
      

  2.   

    look up("java:comp/env/ejb/Xt1") 
    你贴出你的sessionbean代码呀,贴xml干嘛 ?
      

  3.   

    session bean代码如下:
    package jsnd;import javax.ejb.*;
    import javax.naming.*;
    import javax.rmi.PortableRemoteObject;public class UserManagementBean implements SessionBean {
      SessionContext sessionContext;  private Xt1Home xt1Home = null;  public void ejbCreate() throws CreateException {
        try{
          xt1Home = getUserHome();
        }catch(Exception e){
          throw new EJBException("Unable to find local user home in Create",e);
        }
      }
      public void ejbRemove() {
      }
      public void ejbActivate() {
        try{
          xt1Home = getUserHome();
        }catch(Exception e){
          throw new EJBException("Unable to find local user home in Activate",e);
        }
      }
      public void ejbPassivate() {
        xt1Home = null;
      }
      public void setSessionContext(SessionContext sessionContext) {
        this.sessionContext = sessionContext;
      }
      public void addUser(Integer userid, String username, String password) {
        try{
          Xt1 xt1 = xt1Home.create(userid);
        }catch(CreateException e){
          throw new EJBException("Unable to create the local user" + username,e);
        }
      }
      public void removeUser(Integer userid) {
        try{
          xt1Home.remove(userid);
        }catch(RemoveException e){
          throw new EJBException("Unable to remove the user ",e);
        }
      }
      public boolean verifyPassword(Integer userid, String password) {
        try{
          Xt1 xt1 = xt1Home.findByPrimaryKey(userid);
          return xt1.getPassword().equals(password);
        }catch(FinderException e){
          throw new EJBException("Unable to create the local user" + userid,e);
        }
      }
      private jsnd.Xt1Home getUserHome() {
        try{
         Context initial = new InitialContext();
         return (Xt1Home) initial.lookup("java:comp/env/ejb/Xt1");
         }catch(NamingException e){
           throw new EJBException("Unable to find local user home22 ",e);
        }
      }
    }
      

  4.   

    是不是("java:comp/env/ejb/Xt1)这个路径的问题?
      

  5.   

    在session ejb的jar.xml加上对Xt1的引用.
      

  6.   

    然后在程序中调用session ejb的jndi
      

  7.   

    添加对Entity ejb的引用呀,哥哥!