初学ejb3.0的问题,那位高人给指点下,不胜感谢!
本人刚开始学习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一样的错误。
)