初学ejb3.0的问题,那位高人给指点下,不胜感谢!

wuboy2000 2008-11-17 11:14:14
本人刚开始学习ejb3.0,遇到点困难,望各位高人给与帮助,先谢了。
其实问题很简单(就是黎老师EJB3.0入门经典中的代码),我现写了个ejb项目,就是一个实现了remote接口的无状态会话bean,代码如下:
package com.foshanshop.ejb3;
public interface HelloWorld {
public String SayHello(String name);
}
----------------------------------------------------
package com.foshanshop.ejb3.impl;

import com.foshanshop.ejb3.HelloWorld;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote({HelloWorld.class})
public class HelloWorldBean implements HelloWorld {
public String SayHello(String name) {
return name+"说:第一个EJB3程序。";
}
}
---------------------------------------------------
就是一个remote接口,和一个实现了他的无状态会话bean。
然后我把它用eclipse-〉import打了一个java jar包,然后发布在了jboss中,成功了。
下面我接着开放测试这个ejb项目的客户端程序,就是一个简单的web项目,只有一个Test.jsp,代码如下:
<%@ page language="java" contentType="text/html; charset=GBK" %>
<%@ page import="com.foshanshop.ejb3.HelloWorld,javax.naming.*,java.util.*" %>
<%
Properties props=new Properties();
props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","localhost:1099");
try
{
InitialContext ctx=new InitialContext(props);
HelloWorld helloworld=(HelloWorld)ctx.lookup("HelloWorldBean/remote");
out.println(helloworld.SayHello("大家好"));
}
catch(NamingException e)
{
out.println(e.getMessage());
}
%>
-----------------------------------------------------------------------------------
代码也很简单,就是通过jndi查找到远程的对象,然后调用远程的方法。
但是现在问题来了,首先是import=com.foshanshop.ejb3.HelloWorld这里报错,无法引入这个包,自然下面的HelloWorld也就识别不出类型了。那么我就用buildpath,把上一个ejb项目的jar,add进取,可是还是有问题,提示警告:
Severity and Description Path Resource Location Creation Time Id Classpath entry /EjbNo2Ex1/EjbNo2Ex1.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. EjbNo2Ex1WebClient /EjbNo2Ex1WebClient 1226933568078 1543
那么这块问题到底应该如何解决呢?望各位高手执教。

奇怪的是我把这个有错误的web项目打成war包然后部署在同一个jboss中,能正常运行;
但是我把这个war包部署在tomcat下后,运行的时候tomcat会报和eclipse一样的错误。

...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuboy2000 2008-11-18
  • 打赏
  • 举报
回复
OK,感谢3楼的兄弟,马上给分
ejb3boy 2008-11-18
  • 打赏
  • 举报
回复
书中已经明确说了:
web应用与EJB应用发布在同一个Jboss中,web应用不需要加入任何EJB的类文件,因为当负责web应用的类装载器找不到类时,会交给ejb的类装载器负责,而ejb的类装载器可以正确找到ejb的类。

如果你的web应用要在独立的tomcat中运行,应该按照书中第九章"在独立的Web服务器 或J2SE中调用EJB"来做.这时候你要把ejb的接口类和实体类(如果有的话)放入web应用的类路径下,还有要把jboss/client目录下的jar也放入web应用的lib目录中.最后启动jboss时还要绑定ip,如run -b 192.168.1.41
wuboy2000 2008-11-18
  • 打赏
  • 举报
回复
灭有人给解答下么?
是没有高手,还是高手都不懈解答?
victorxiang 2008-11-18
  • 打赏
  • 举报
回复
强烈建议学习实用的框架
spring hibernate ,ibatis,struts等

67,538

社区成员

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

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