首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

EJB中java.lang.ClassCastException的错误

2012-10-14 
EJB中java.lang.ClassCastException的异常1、发布server??? 我用的是myeclipse,所以创建ejb项目比较简单。发

EJB中java.lang.ClassCastException的异常

1、发布server

??? 我用的是myeclipse,所以创建ejb项目比较简单。发布和普通的发布tomcat一样。

2、用java project连接ejb

???? 报错java.lang.ClassCastException的原因网上很多,我犯了一个低级错误,就是server上的ejb接口和我本地java project里面的接口包路径不对,所以会报类型转换异常。

????? 还有如果用java project记得要引入jbossall-client.jar到classpath中。

??????附上test.java代码

package test;import javax.naming.InitialContext;import javax.naming.NamingException;public class Test {public static void main(String[] args) {InitialContext ctx;try {ctx = new InitialContext();EJBHelloRemote ret = (EJBHelloRemote)ctx.lookup("EJBHello/remote");String s = ret.sayTime(); System.out.println(s);} catch (NamingException e) {e.printStackTrace();}}}

?这里上下文是通过默认的,所以你需要一个jndi.properties的配置文件,如下:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099

而且是放在src下面。

如果不用默认的,你可以自己在代码中写,网上搜下 ejb初始化上下文。

EJBHelloRemote 接口如下:

package test;import javax.ejb.Remote;@Remotepublic interface EJBHelloRemote {public String sayTime();}

?3、用web project连接ejb

???? 和java project一样写一个ejb的接口(记得包路径要一样)。

然后在jsp中调用。

jsp代码如下:

<%@ page language="java" import="java.util.*,javax.naming.*,test.*" pageEncoding="GB2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <body>    <%    InitialContext ctx = new InitialContext();    EJBHelloRemote hello =(EJBHelloRemote)ctx.lookup("EJBHello/remote");    out.print(hello.sayTime());     %>  </body></html>

?

热点排行