tomcat调用jboss ejb3 出错 请大师们帮个忙

苍狼 2011-10-13 09:23:32
学习EJB3,用MyEclipse9开发了简单例子,EJB工程的web和ejb部分发布到jboss6下完全能正常运行,但是把web发布到tomcat7下调用jboss6下的ejb应用时出现了错误
java.lang.ClassCastException: javax.naming.Reference cannot be cast to com.ejb3.HelloWorld

我已经把ejb接口class文件复制到tomcat web项目的classes目录下,并把ejb所依赖的相应jar包复制到web项目的lib目录下(复制的jar包是从jboss client目录下复制的,但不全"jboss-aop-client.jar","jboss-aspect-jdk50-client.jar","jboss-ejb3-common-client.jar","jboss-ejb3-core-client.jar","jboss-ejb3-ext-api-impl.jar","jboss-ejb3-ext-api.jar","jboss-logging.jar","jboss-remoting.jar","jbossall-client.jar","jnp-client.jar","log4j.jar")
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
苍狼 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 beiouwolf 的回复:]
jboss的jndi配置必须有
<use-java-context>false</use-java-context>
不然也不能从外部访问
[/Quote]

你说的JNDI配置文件在什么目录下有?文件名叫什么?
宁波朱超 2011-10-13
  • 打赏
  • 举报
回复
对了要是你EJB容器 不是JBOSS 要是是WEBLOGIC 或者其它的 你要用 该EJB容器的配置参数。
宁波朱超 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 beiouwolf 的回复:]
你是怎么样调用jndi的
jboss外部jndi调用挺麻烦的 还要配置文件和jboss一些设置的
[/Quote]

这有啥麻烦的

TOMCAT放JSP页面 JBOSS上EJB EJB去找DB
注意的是TOMCAT下要放好JDNI的配置文件里面的配置好JBOSS的IP地址
JBOSS上要开放IP地址让TOMCAT来访问
我估计你是JBOSS没有对外网开放。
beiouwolf 2011-10-13
  • 打赏
  • 举报
回复
你是怎么样调用jndi的
jboss外部jndi调用挺麻烦的 还要配置文件和jboss一些设置的
beiouwolf 2011-10-13
  • 打赏
  • 举报
回复
jboss的jndi配置必须有
<use-java-context>false</use-java-context>
不然也不能从外部访问
苍狼 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhuchao_ko 的回复:]
对了要是你EJB容器 不是JBOSS 要是是WEBLOGIC 或者其它的 你要用 该EJB容器的配置参数。
[/Quote]

能否再详细点,看了没太看懂啥意思
苍狼 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 beiouwolf 的回复:]
你是怎么样调用jndi的
jboss外部jndi调用挺麻烦的 还要配置文件和jboss一些设置的
[/Quote]

<%@ page language="java" import="java.util.*"%>
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="com.foshanshop.ejb3.HelloWorld, javax.naming.*, java.util.Properties"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx;
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("myejb/HelloWorldBean/remote");
out.println(helloworld.SayHello("哈哈"));
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
苍狼 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuchao_ko 的回复:]
引用 1 楼 beiouwolf 的回复:
你是怎么样调用jndi的
jboss外部jndi调用挺麻烦的 还要配置文件和jboss一些设置的


这有啥麻烦的

TOMCAT放JSP页面 JBOSS上EJB EJB去找DB
注意的是TOMCAT下要放好JDNI的配置文件里面的配置好JBOSS的IP地址
JBOSS上要开放IP地址让TOMCAT来访问
我估计你是JBOSS没有对外……
[/Quote]


tomcat和jboss是在同一台电脑上部署的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧