ECLIPSE 建立分布式 EJB 项目的基本过程Word格式文档下载.docx
《ECLIPSE 建立分布式 EJB 项目的基本过程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ECLIPSE 建立分布式 EJB 项目的基本过程Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
publicinterfaceHelloServiceLocal{
importjavax.ejb.Stateless;
/**
*SessionBeanimplementationclassHelloService
*/
@Stateless
publicclassHelloServiceimplementsHelloServiceRemote,HelloServiceLocal{
/**
*Defaultconstructor.
publicHelloService(){
//TODOAuto-generatedconstructorstub
}
加入我们的一个测试方法getHello()和addNum()
publicStringgetHello(Stringname);
publicIntegeraddNum(Integerx,Integery);
publicStringgetHello(Stringname);
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
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}
42,234INFO[SessionSpecContainer]Startingjboss.j2ee:
jar=helloEJBServer.jar,name=HelloService,service=EJB3
42,250INFO[EJBContainer]STARTEDEJB:
.sample.HelloServiceejbName:
HelloService
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"
>
html>
head>
metahttp-equiv="
Content-Type"
content="
title>
Inserttitlehere<
/title>
/head>
body>
%
Hashtableproperties=newHashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"
properties.put(Context.PROVIDER_URL,"
//127.0.0.1"
try{
InitialContextctx=newInitialContext(properties);
HelloServiceRemotedao=(HelloServiceRemote)ctx.lookup("
out.println(dao.getHello("
)+"
br/>
hr/>
out.println("
ctx.close();
}catch(NamingExceptione){
e.printStackTrace();
}
%>
/body>
/html>
将项目加载到TOMCAT下
由于服务端项目是加载到JBOSS下,因此等于一台机器同时起两个应用服务器,有可能出现8080端口冲突,需要将TOMCAT的端口改成别的,避免和JBOSS的8080冲突
测试,访问http:
8190/helloEJBClient/hello.jsp
2.6建立EJBWEBMVC客户端测试代码(以简单的SERVLET代替)
本来想做个struts2的例子,但考虑要增加很多步骤,与本文力求简单初级使用的宗旨不符.所以这里以基础的servlet代替(尽管现在已经很少有人用servlet了)
建立servlet类
package.sample.testjsp.servlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@SuppressWarnings("
serial"
)
publicclassHelloServiceServletextendsHttpServlet{
@Override
protectedvoiddoGet(HttpServletRequestreques,HttpServletResponseresponse)
throwsServletException,IOException{
this.doPost(reques,response);
protectedvoiddoPost(HttpServletRequestreques,HttpServletResponseresponse)
System.out.println("
doPost"
PrintWriterout=response.getWriter();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"
HelloServiceRemotedao=
(HelloServiceRemote)ctx.lookup("
out.println(dao.getHello("
macServlet"
out.println("
}
TOMCAT重启
8190/helloEJBClient/HelloWorldServlet