jsp调用EJB的local接口出现异常,请高手指点,谢谢! <ejb-ref-name>ejb/localtest</ejb-ref-name>中的ejb/localtest有问题吧你把“/”去掉或换一个名字 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to scj123456(孤独浪子) :我试过了,可是还是不行to upcmill()请问有什么办法么 JSP调用本地接口,让你调用吗,那不成!~~~ 本地接口是在同一个ejb容器中互相调用的你的ejb怎么能调用呢?用远程接口吧 本地接口只能是在一个EJB容器内EJB之间可以相互调用的.jsp要调用远程接口 哦说错了应该是“你的jsp怎么能调用呢”^_^ ("java:comp/env/ejb/localtest");出错,你写个jndi.xml文件试试 我将war和jar打包成ear,这样jsp和servlet都可以访问ejb的local接口,不过新的问题出现,我利用一个纯java类封装home接口的查找过程,然后在jsp和servlet中调用,出现java.lang.ClassCastException:counttest.CountEjbBean_530t8y_LocalHomeImpl我想请问java代码和jsp代码实现的容器不在同一进程,因为只有同一进程才能调用ejb的local接口,谢谢!调用代码为:封装类的实现过程为:EjbHomeFactory factory = EjbHomeFactory.getInstance();CountEjbLocalHome home = (CountEjbLocalHome)factory.lookup("CountEjbLocal", CountEjbLocalHome.class);//出错CountEjbLocal hello = home.create(33); count = hello.getCount();package countsession;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: GUANGDONG GEVER TECH CO.,LTD</p> * @author dalily * @version 1.0 */import java.util.HashMap;import java.util.Properties;import javax.ejb.EJBHome;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;public class EjbHomeFactory { private static EjbHomeFactory factory =null; private HashMap hsHome = null; private Context ctx = null; //初始化 private EjbHomeFactory() throws Exception{ hsHome = new HashMap(); ctx = getInitialContext(); } 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) { throw e; } } public static synchronized EjbHomeFactory getInstance() throws Exception { if (factory==null){ factory = new EjbHomeFactory(); } return factory; } public EJBHome lookup(String jndiName, Class homeInterfaceClass) throws NamingException { // See if we already have this interface cached EJBHome homeInterface = (EJBHome)hsHome.get(homeInterfaceClass); // If not, look up with the supplied JNDI name if (homeInterface == null) { homeInterface = (EJBHome) ctx.lookup(jndiName); // If this is a new ref, save for caching purposes hsHome.put(homeInterfaceClass, homeInterface); } return homeInterface; }} 你把你的jar放一份到服务器的lib目录下看看 字符串操作 【struts1.2】我又测试不通了.. 冷蝶整理:J2EE面试细节问题——EJB 请教高手 急 strReplace(sql, "'", "''"); 急问!!!!如何取出下列字符串中的文件名!!! 求助判断IP地址问题 petstore安装问题,请高手指点迷津 关于Connection,Statement,ResultSet的依赖关系 关于java调用oracle存储过程,输入参数为自定义类型的问题。 eclipse的plugin中如何在console上打印信息呢? jbuilderx下发布ejb时的warning
我试过了,可是还是不行
to upcmill()
请问有什么办法么
你的ejb怎么能调用呢?
用远程接口吧
说错了
应该是“你的jsp怎么能调用呢”^_^
不过新的问题出现,我利用一个纯java类封装home接口的查找过程,然后在jsp和servlet中调用,出现java.lang.ClassCastException:counttest.CountEjbBean_530t8y_LocalHomeImpl
我想请问java代码和jsp代码实现的容器不在同一进程,因为只有同一进程才能调用ejb的local接口,谢谢!
调用代码为:
封装类的实现过程为:
EjbHomeFactory factory = EjbHomeFactory.getInstance();
CountEjbLocalHome home = (CountEjbLocalHome)factory.lookup("CountEjbLocal", CountEjbLocalHome.class);//出错
CountEjbLocal hello = home.create(33);
count = hello.getCount();
package countsession;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: GUANGDONG GEVER TECH CO.,LTD</p>
* @author dalily
* @version 1.0
*/import java.util.HashMap;
import java.util.Properties;
import javax.ejb.EJBHome;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;public class EjbHomeFactory {
private static EjbHomeFactory factory =null;
private HashMap hsHome = null;
private Context ctx = null; //初始化
private EjbHomeFactory() throws Exception{
hsHome = new HashMap();
ctx = getInitialContext();
}
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) { throw e;
}
} public static synchronized EjbHomeFactory getInstance() throws Exception {
if (factory==null){
factory = new EjbHomeFactory();
}
return factory; } public EJBHome lookup(String jndiName, Class homeInterfaceClass)
throws NamingException { // See if we already have this interface cached
EJBHome homeInterface = (EJBHome)hsHome.get(homeInterfaceClass); // If not, look up with the supplied JNDI name
if (homeInterface == null) {
homeInterface = (EJBHome) ctx.lookup(jndiName); // If this is a new ref, save for caching purposes
hsHome.put(homeInterfaceClass, homeInterface);
}
return homeInterface;
}}