当前位置:  技术问答>java相关

EJB初学者,遇到困难,求救各位!!!

    来源: 互联网  发布时间:2017-04-13

    本文导语:  SessionBean 里面访问本地实体Bean,服务器报错如下: ------------  服务器报错信息  ------------------- javax.ejb.EJBException: Attempt to pass a reference to an EJBLocalObject to a remote client.  A local EJB component may only be access...

SessionBean 里面访问本地实体Bean,服务器报错如下:
------------  服务器报错信息  -------------------
javax.ejb.EJBException: Attempt to pass a reference to an EJBLocalObject to a remote client.  A local EJB component may only be accessed by clients co-located in the same ear or standalone jar file.


------------------------------------------------
SessionBean与实体Bean在同一包下面而且在同一个jar文件内,其代码如下:
**************
package j2eetest.zxadvice;

import javax.ejb.*;
import java.util.*;
import java.sql.*;

public interface Zxadvice extends javax.ejb.EJBLocalObject {
    public Integer getCid();
    public void setTname(String tname);
    public String getTname();
    public void setCompanyname(String companyname);
    public String getCompanyname();
    public void setAddress(String address);
    public String getAddress();
    public void setMailcode(String mailcode);
    public String getMailcode();
    public void setTelephonecode(String telephonecode);
    public String getTelephonecode();
    public void setEmail(String email);
    public String getEmail();
    public void setAdvice(String advice);
    public String getAdvice();
    public void setTtime(Timestamp ttime);
    public Timestamp getTtime();
}
*************
package j2eetest.zxadvice;

import javax.ejb.*;
import java.util.*;

public interface ZxadviceHome extends javax.ejb.EJBLocalHome {
    public Zxadvice create(Integer cid) throws CreateException;
    public Collection findBytname(String name) throws FinderException;
    public Zxadvice findByPrimaryKey(Integer cid) throws FinderException;
}
**************
package j2eetest.zxadvice;

import javax.ejb.*;

abstract public class ZxadviceBean implements EntityBean {
    EntityContext entityContext;
    public java.lang.Integer ejbCreate(java.lang.Integer cid) throws CreateException {
        setCid(cid);
        return null;
    }
    public void ejbPostCreate(java.lang.Integer cid) throws CreateException {
        /**@todo Complete this method*/
    }
    public void ejbRemove() throws RemoveException {
        /**@todo Complete this method*/
    }
    public abstract void setCid(java.lang.Integer cid);
    public abstract void setTname(java.lang.String tname);
    public abstract void setCompanyname(java.lang.String companyname);
    public abstract void setAddress(java.lang.String address);
    public abstract void setMailcode(java.lang.String mailcode);
    public abstract void setTelephonecode(java.lang.String telephonecode);
    public abstract void setEmail(java.lang.String email);
    public abstract void setAdvice(java.lang.String advice);
    public abstract void setTtime(java.sql.Timestamp ttime);
    public abstract java.lang.Integer getCid();
    public abstract java.lang.String getTname();
    public abstract java.lang.String getCompanyname();
    public abstract java.lang.String getAddress();
    public abstract java.lang.String getMailcode();
    public abstract java.lang.String getTelephonecode();
    public abstract java.lang.String getEmail();
    public abstract java.lang.String getAdvice();
    public abstract java.sql.Timestamp getTtime();
    public void ejbLoad() {
        /**@todo Complete this method*/
    }
    public void ejbStore() {
        /**@todo Complete this method*/
    }
    public void ejbActivate() {
        /**@todo Complete this method*/
    }
    public void ejbPassivate() {
        /**@todo Complete this method*/
    }
    public void unsetEntityContext() {
        this.entityContext = null;
    }
    public void setEntityContext(EntityContext entityContext) {
        this.entityContext = entityContext;
    }
}
********************
package j2eetest.zxadvice;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;
import javax.naming.*;
import j2eetest.tools.*;

public interface ZxadviceSession extends javax.ejb.EJBObject {
    public Collection getContent(String cid) throws RemoteException;
}
*******************
package j2eetest.zxadvice;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface ZxadviceSessionHome extends javax.ejb.EJBHome {
    public ZxadviceSession create() throws CreateException, RemoteException;
}
******************
package j2eetest.zxadvice;

import java.util.*;
import javax.ejb.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;

public class ZxadviceSessionBean implements SessionBean {
    SessionContext sessionContext;
    public void ejbCreate() throws CreateException {
        /**@todo Complete this method*/
    }
    public void ejbRemove() {
        /**@todo Complete this method*/
    }
    public void ejbActivate() {
        /**@todo Complete this method*/
    }
    public void ejbPassivate() {
        /**@todo Complete this method*/
    }
    public void setSessionContext(SessionContext sessionContext) {
        this.sessionContext = sessionContext;
    }
    public java.util.Collection getContent(java.lang.String cid) {
        ArrayList al = new ArrayList();
        try {
//            al = (ArrayList)this.getHome().findByPrimaryKey(Integer.getInteger(cid));
            al = (ArrayList)this.getHome().findBytname(cid);
        }catch(Exception e){
            e.printStackTrace();
        }
        return al;
    }
    private ZxadviceHome getHome() throws Exception {
        System.out.println("====== above InitialContext ======");
        System.out.println("====== after InitialContext ======");

        Context ic = new InitialContext();
        Object ref = ic.lookup("Zxadvice");
        System.out.println("====== after lookup ======");
        System.out.println("obj = "+ref);
        ZxadviceHome imh = (ZxadviceHome)PortableRemoteObject.narrow(ref , ZxadviceHome.class);
//        ZxadviceHome imh = (ZxadviceHome) PortableRemoteObject.narrow(ref,ZxadviceHome.class);
        return imh;
    }
    private Context getInitialContext() throws Exception {
        String url = "t3://localhost:7001";
        String user = null;
        String password = null;
        Properties properties = null;
        try {
            properties = new Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
            if (user != null) {
                properties.put(Context.SECURITY_PRINCIPAL, user);
                properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
            }

            return new InitialContext(properties);
        }
        catch(Exception e) {
            return null;
        }
    }
}
**************

|
你的问题可能是想把CMP(Local)的引用传给Client,这是不行的,因为它
是本地的。
一般是通过一个SessionBean来包裹本地的实体Bean,client只能访问SessionBean,建议看看Facade模式。

|
顶~!

|
检查一下Sessionbean,可能在调用Entitybean的Home接口时通过了远程调用,而不是 Local。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学EJB,javax.ejb.*; 应该将哪个library 放进来
  • 初学EJB的问题,谢谢!
  • EJB这么火,决定开始学习,请各位大牛指教,初学该看什么书?
  • 初学EJB的问题。
  • 初学 EJB 的困惑 EJB 菜鸟请进 ----------------- 在线等待!!!!
  • 初学ejb,小问题,请赐教。。。
  • 初学ejb的问题,解决问题保证得分
  • ejb2与ejb1有什么区别? 或哪有ejb2规范的资料?
  • 如何在一个EJB工程中引用另外一个EJB包中的EJB对象?跟帖都有分!!!
  • EJB2.0提供了许多新特性,包括EJB SQL语言,谁有EJB SQL语言的帮助文档,100分求助!
  • EJB测试工具 Ejb3Unit
  • 奇怪啊,奇怪,为什么我的JB7做EJB时,只要在EJB设计面板上随便做点东西,我的EJB的JAVA的源码就会变的不见了,或者少了很多字段申明??
  • EJB的概述,EJB的相关网站?100分给回答最好的
  • EJB应用及JavaBean调用EJB
  • EJB的好书,请推荐,我看了<精通EJB2.0>,好薄哟!!
  • 请给介绍一本EJB的书,我刚学~~不想要《精通EJB》,感觉老了点~~
  • 成立java协会不如成立ejb俱乐部,不过大概没有谁会喜欢ejb了
  • jb中建ejb为什么要先弄个EJB module
  • 谁有关于EJB配置方面的好的资料吗?最好是EJB2.0的。
  • 在win2000下weblogic EJB Deployer 配置ejb时出问题
  • 一个网站适合不适合用ejb???具体在什么情况下,要必须用ejb?和用户数量有关系吗 ??
  • 快来救命啊。EJB调用EJB问题。深度郁闷,高分相送。
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • EJB新手提问,同一服务器(就是同一容器吧)内EJB之间调用如何处理?
  • 在JRUN下如何配置EJB? AND 在J2EE下如何配置EJB?
  • Container-ManagedPersistence的EJB设定EJB Relationship的问题
  • EJB的问题,希望用EJB做过开发的高手回答。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3