ECLIPSE 建立分布式 EJB 项目的基本过程.docx

上传人:b****5 文档编号:5800497 上传时间:2023-01-01 格式:DOCX 页数:22 大小:810.35KB
下载 相关 举报
ECLIPSE 建立分布式 EJB 项目的基本过程.docx_第1页
第1页 / 共22页
ECLIPSE 建立分布式 EJB 项目的基本过程.docx_第2页
第2页 / 共22页
ECLIPSE 建立分布式 EJB 项目的基本过程.docx_第3页
第3页 / 共22页
ECLIPSE 建立分布式 EJB 项目的基本过程.docx_第4页
第4页 / 共22页
ECLIPSE 建立分布式 EJB 项目的基本过程.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

ECLIPSE 建立分布式 EJB 项目的基本过程.docx

《ECLIPSE 建立分布式 EJB 项目的基本过程.docx》由会员分享,可在线阅读,更多相关《ECLIPSE 建立分布式 EJB 项目的基本过程.docx(22页珍藏版)》请在冰豆网上搜索。

ECLIPSE 建立分布式 EJB 项目的基本过程.docx

ECLIPSE建立分布式EJB项目的基本过程

ECLIPSE建立分布式EJB项目的基本过程

环境要求

ØEclipseJavaEE(version3.6)

ØJDK1.6

ØJBOSS5.1.0

ØTOMCAT6.0.14

设计拓扑

步骤

1.建立/部署EJBSERVER项目

1.1建立EJBSERVER项目

点完成

1.2写入服务端源代码

点完成

自动生成的源代码如下:

package.sample;

importjavax.ejb.Remote;

@Remote

publicinterfaceHelloServiceRemote{

}

package.sample;

importjavax.ejb.Local;

@Local

publicinterfaceHelloServiceLocal{

}

package.sample;

importjavax.ejb.Stateless;

/**

*SessionBeanimplementationclassHelloService

*/

@Stateless

publicclassHelloServiceimplementsHelloServiceRemote,HelloServiceLocal{

/**

*Defaultconstructor.

*/

publicHelloService(){

//TODOAuto-generatedconstructorstub

}

}

加入我们的一个测试方法getHello()和addNum()

package.sample;

importjavax.ejb.Remote;

@Remote

publicinterfaceHelloServiceRemote{

publicStringgetHello(Stringname);

publicIntegeraddNum(Integerx,Integery);

}

package.sample;

importjavax.ejb.Local;

@Local

publicinterfaceHelloServiceLocal{

publicStringgetHello(Stringname);

publicIntegeraddNum(Integerx,Integery);

}

package.sample;

importjavax.ejb.Stateless;

/**

*SessionBeanimplementationclassHelloService

*/

@Stateless

publicclassHelloServiceimplementsHelloServiceRemote,HelloServiceLocal{

/**

*Defaultconstructor.

*/

publicHelloService(){

//TODOAuto-generatedconstructorstub

}

publicStringgetHello(Stringname){

return"Hello"+name;

}

publicIntegeraddNum(Integerx,Integery){

returnx+y;

}

}

1.3部署服务端源代码

将项目导出成JAR包,然后拷贝到JBOSS部署目录下

点browser,选中导出的目的地---JBOSS的部署目录

也可以导出到桌面上,然后COPY入JBOSS的部署目录

总之,结果是

启动JBOSS

可以在ECLIPSE里启动,也可以直接到JBOSS/bin目录下启动JBOSS

可以看到下面的启动日志

10:

38:

41,781INFO[JBossASKernel]Addedbean(jboss.j2ee:

jar=helloEJBServer.jar,name=HelloService,service=EJB3)toKernelDeploymentof:

helloEJBServer.jar

10:

38:

41,796INFO[EJB3EndpointDeployer]DeployAbstractBeanMetaData@18ddef7{name=jboss.j2ee:

jar=helloEJBServer.jar,name=HelloService,service=EJB3_endpointbean=org.jboss.ejb3.endpoint.deployers.impl.EndpointImplproperties=[container]constructor=nullautowireCandidate=true}

10:

38:

42,234INFO[SessionSpecContainer]Startingjboss.j2ee:

jar=helloEJBServer.jar,name=HelloService,service=EJB3

10:

38:

42,250INFO[EJBContainer]STARTEDEJB:

.sample.HelloServiceejbName:

HelloService

10:

38:

42,468INFO[JndiSessionRegistrarBase]BindingthefollowingEntriesinGlobalJNDI:

HelloService/remote-EJB3.xDefaultRemoteBusinessInterface

HelloService/remote-.sample.HelloServiceRemote-EJB3.xRemoteBusinessInterface

HelloService/local-EJB3.xDefaultLocalBusinessInterface

HelloService/local-.sample.HelloServiceLocal-EJB3.xLocalBusinessInterface

检查部署情况,访问http:

//localhost:

8080,点击进入JMXConsole

再点击进入service=JNDIView

在JNDIVIEW界面下,在list行,点击invoke按钮

可以在列出bean里面,在GlobalJNDINamespace下,看到部署上去的HelloServicebean和它的remote接口和local接口

2.建立/部署EJBCLIENT(客户端)项目

2.1建立EJBCLIENT项目

建议一个普通的WAR包项目(ECLIPSE下的DynamicWebProject项目)

2.2导入JBOSSEJB客户端库入项目buildpath

到JBOSS工作目录下的client子目录

将里面的所有文件都拷贝入WAR包的WEB-INF/lib目录下

2.3将服务端项目里的接口文件拷入客户端项目(当然更正规的做法是做成jar包放入buildpath)

注意:

1.只拷接口,不要拷实现类

2.不仅接口名不能变化,包名也不能变化,要保持一致

2.4建立EJBAPPLICATION客户端测试代码(可以直接命令行执行的客户端)

package.sample.testclient;

importjava.util.Hashtable;

importjavax.naming.Context;

importjavax.naming.InitialContext;

importjavax.naming.NamingException;

import.sample.HelloServiceRemote;

 

publicclassTestAppClient{

/**

*@paramargs

*@throwsNamingException

*/

publicstaticvoidmain(String[]args){

Hashtableproperties=newHashtable();

//配置驱动程序,JBoss特定的

properties.put(Context.INITIAL_CONTEXT_FACTORY,

"org.jnp.interfaces.NamingContextFactory");

//配置jndiURL,这个URL格式没有规定,各个服务器各自一套

properties.put(Context.PROVIDER_URL,"jnp:

//localhost");

try{

InitialContextctx=newInitialContext(properties);

HelloServiceRemotedao=

(HelloServiceRemote)ctx.lookup("HelloService/remote");

System.out.println(dao.getHello("mac2"));

System.out.println("3+13="+dao.addNum(3,13));

ctx.close();

}catch(NamingExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

执行这个程序(RunasJavaApplication)

Hellomac2

3+13=16

2.5建立EJBWEB客户端测试代码(可以网页客户端)

在WebContent下建立jsp文件

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

<%@pageimport="java.util.*,

javax.naming.Context,

javax.naming.InitialContext,

javax.naming.NamingException,

.sample.HelloServiceRemote"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

Hashtableproperties=newHashtable();

properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");

properties.put(Context.PROVIDER_URL,"jnp:

//127.0.0.1");

try{

InitialContextctx=newInitialContext(properties);

HelloServiceRemotedao=(HelloServiceRemote)ctx.lookup("HelloService/remote");

out.println(dao.getHello("mac2")+"


");

out.println("3+13="+dao.addNum(3,13));

ctx.close();

}catch(NamingExceptione){

e.printStackTrace();

}

%>

将项目加载到TOMCAT下

注意:

由于服务端项目是加载到JBOSS下,因此等于一台机器同时起两个应用服务器,有可能出现8080端口冲突,需要将TOMCAT的端口改成别的,避免和JBOSS的8080冲突

测试,访问http:

//localhost:

8190/helloEJBClient/hello.jsp

2.6建立EJBWEBMVC客户端测试代码(以简单的SERVLET代替)

本来想做个struts2的例子,但考虑要增加很多步骤,与本文力求简单初级使用的宗旨不符.所以这里以基础的servlet代替(尽管现在已经很少有人用servlet了)

建立servlet类

package.sample.testjsp.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.util.Hashtable;

importjavax.naming.Context;

importjavax.naming.InitialContext;

importjavax.naming.NamingException;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

import.sample.HelloServiceRemote;

@SuppressWarnings("serial")

publicclassHelloServiceServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreques,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(reques,response);

}

@Override

protectedvoiddoPost(HttpServletRequestreques,HttpServletResponseresponse)

throwsServletException,IOException{

System.out.println("doPost");

PrintWriterout=response.getWriter();

Hashtableproperties=newHashtable();

//配置驱动程序,JBoss特定的

properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");

//配置jndiURL,这个URL格式没有规定,各个服务器各自一套

properties.put(Context.PROVIDER_URL,"jnp:

//localhost");

try{

InitialContextctx=newInitialContext(properties);

HelloServiceRemotedao=

(HelloServiceRemote)ctx.lookup("HelloService/remote");

out.println(dao.getHello("macServlet")+"


");

out.println("3+13="+dao.addNum(3,13));

ctx.close();

}catch(NamingExceptione){

e.printStackTrace();

}

}

}

TOMCAT重启

测试,访问http:

//localhost:

8190/helloEJBClient/HelloWorldServlet

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1