从现在开始,我也要开始学习
EJB了,原来虽然有所了解,一直还没有动手操作过,现在的项目时间不紧,可以好好
学习一下。具体的概念什么的我这里就不多说,因为我想如果你需要知道的话,我说还说不全,你不如去网上搜搜,多得很。
我用的开发IDE是Jdeveloper10.1.3,个人觉得这个东西非常的好使,并不比那些诸如MyEclipse之类的差,并且是Oracle公司发出来的,界面也美观,有很多的导航,以及示例演示,如果你需要可以去ORACLE的官方网站上下载。
本人承诺,所发表的一切示例都是经过本人
测试通过,才会拿出来的,你尽可以使用,如果调试不通,请检查你是的配置是否恰当。
文件列表示图如下:
package test.ejb.session; import javax.ejb.Remote; /** * 远程接口 */ @Remote public interface HelloWorldSession { String sayHello(String name); } HelloWorldSessionBean: /** * 示例BEAN */ package test.ejb.session; import javax.ejb.Stateless; @Stateless(name = "HelloWorldSession") public class HelloWorldSessionBean implements HelloWorldSession, HelloWorldSessionLocal { public HelloWorldSessionBean() { } public String sayHello(String name) { return "Hello " + name; } public String sayHelloLocal(String name) { return "Hello " + name; } } HelloWorldSessionLocal: package test.ejb.session; import javax.ejb.Local; /** * 本地接口 */ @Local public interface HelloWorldSessionLocal { String sayHelloLocal(String name); } HelloWorldSessionClient: package test.ejb.client; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import test.ejb.session.HelloWorldSession; public class HelloWorldSessionClient { public static void main(String [] args) { try { final Context context = getInitialContext(); HelloWorldSession helloWorldSession = (HelloWorldSession)context.lookup("HelloWorldSession"); // Call any of the Remote methods below to access the EJB // helloWorldSession.sayHello( name ); System.out.println(helloWorldSession.sayHello("World")); } catch (Exception ex) { ex.printStackTrace(); } } private static Context getInitialContext() throws NamingException { // Get InitialContext for Embedded OC4J // The embedded server must be running for lookups to succeed. return new InitialContext(); } } |
Html代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page contentType="text/html;charset=GBK"%> <%@ page import="javax.naming.*, java.util.Properties"%> <%@ page import="test.ejb.client.*"%> <%@ page import="test.ejb.session.*"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <title>TestHelloWorld</title> </head> <body> <% InitialContext ctx=new InitialContext();//取得环境 //下面这个取得名字,我需要说明一下,有很多书上都是这样的说的: //如果是用的JSP的调用,因为多半是和被调用的EJB是处在同一个虚拟机上,所以用 //”名字/local”的方式,如果是java客户端调用,就采用”名字/remote”的方式,我看的例//子也是这样的,所以我用了好久的时间来调试,因为现在我所采用的是EJB3,所以调 //用就不加Local或者是remote,直接引用远程接口的名字就OK了 HelloWorldSession helloWorld=(HelloWorldSession)ctx.lookup("HelloWorldSession"); out.println(helloWorld.sayHello("World")); %> </body> </html> |
另外再补充一点:就是我这里不管是在JAVA客户端还是在JSP客户端,如果想调用LOCAL接口都会被报错,我现在正在找这方面的原因,希望分享。