Web服务客户端可以通过bean的Web服务端点实现类来访问无状态会话Bean。在默认情况下,bean类中的所有公共方法对于Web服务客户端都是可访问的。@WebMethod注释可以自定义Web服务方法,一旦在公共方法上使用该注释,那么其他没使用@WebMethod注释的方法将不会对Web服务客户端展现。
首先新建一个EJB模块,然后在EJB模块上新建一个WebService,代码如下:
@WebService()
@Stateless()
public class Dog {
@WebMethod(operationName = "ganr")
public String ganr() {
return "Wo-Wo-Wo";
}
}
Dog类同时使用了@WebService和@Stateless注释,web服务端点只能是无状态会话bean,web服务本身就是无状态的。我们还用@WebMethod注释向Web服务客户端公开了一个ganr方法,完成后打包部署。
接着我们创建一个Web模块,然后在Web项目上右键,选新建--Web服务客户端,指定项目或者WSDL url。接着新建一个Servlet,然后右键调用Web服务操作,我们找到Dog服务的garn方法点确定,代码自动生成:
@WebServiceRef(wsdlLocation = "http://localhost:8080/DogService/Dog?wsdl")
private DogService service;
@WebServiceRef注释声明了一个到Web服务的引用
try { // Call Web Service Operation
ejb.Dog port = service.getDogPort();
// TODO process result here
java.lang.String result = port.ganr();
out.println("Result = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
service.getDogPort()方法获取到服务的一个代理,也称为端口。接着看jsp:
<%
try {
ejb.DogService service = new ejb.DogService();
ejb.Dog port = service.getDogPort();
// TODO process result here
java.lang.String result = port.ganr();
out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
发现只有一点点不同,完成后部署web应用并运行测试。
我们还可以通过一个现有的会话Bean创建Web服务,还是拿HelloWorld举例,首先创建一个远程接口:
@Remote
public interface HelloRemote {
String sayHi(String name);
}
再创建一个无状态会话bean,先已经说过了,只能是无状态会话bean:
@Stateless
public class HelloBean implements HelloRemote {
public String sayHi(String name) {
return "Hi " + name;
}
}
然后新建一个Web服务Hello,只不过在弹出窗口中要选中“通过现有会话bean创建Web服务”单选框,并浏览指定HelloBean,代码自动完成:
@WebService()
@Stateless()
public class Hello {
@EJB
private HelloRemote ejbRef;
// Add business logic below. (Right-click in editor and choose
// "Web Service > Add Operation"
@WebMethod(operationName = "sayHi")
public String sayHi(@WebParam(name = "name")String name) {
return ejbRef.sayHi(name);
}
}
我们看到Hello服务里引用了一个HelloRemote接口,并发现远程接口公开的方法也被Hello服务公开,完成后打包部署EJB模块。接着在Web服务客户端测试,这和之前的步骤一样,不再赘述,直接看代码吧:
@WebServiceRef(wsdlLocation = "http://localhost:8080/HelloService/Hello?wsdl")
private HelloService service;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
try { // Call Web Service Operation
ejb.Hello port = service.getHelloPort();
// TODO initialize WS operation arguments here
java.lang.String name = "Tom";
// TODO process result here
java.lang.String result = port.sayHi(name);
out.println("Result = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
<%
try {
ejb.HelloService service = new ejb.HelloService();
ejb.Hello port = service.getHelloPort();
// TODO initialize WS operation arguments here
java.lang.String name = "Tom";
// TODO process result here
java.lang.String result = port.sayHi(name);
out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
发现一个问题,一个应用上不能新建两个Web服务客户端(Dog和Hello),只有一个能有效使用(只找到一份工件),这是为什么
分享到:
相关推荐
EJB3+JBOSS5+JPA整合,里面还用到了ejb3注解。
(8):JBoss EJB3(HelloWorld)备忘记 15 摘要: 15 备忘记开始: 16 [1] 安装 jdk 5: 16 [2] 安装 JBoss EJB3: 16 [3] 第一次启动 JBoss: 18 [4] 安装 Eclipse WTP: 18 [5] 安装 JBoss IDE: 18 [6] 使用 ...
EJB3入门例子,jboss5+EJB3+myEclipse
ejb3_structs ejb and jboss
eclipse + JBoss 5 + EJB3开发指南(转载整理)
ejb3,Session Bean,实体Bean,MessageDriven Bean综合案例,jboss5下运行
EJB3规范 简体中文 多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加
EJB3开发指南英文版《EJB.3.Developer.Guide》 出版商:PacketPublishing 出版日期:2008年5月 页数:276 简介: 第一章:EJB3体系结构简介 第二章:Session Beans 第三章:实体Entities 第四章:对象关系映射ORM 第...
ejb3-persistence-1.0.2.GA-sources.jar ejb3 jbpm5 源码
非常好的指导Eclipse下通过JBOSS开发EJB的入门指导书, 通过原作者的实际使用总结得到,简洁易懂。
我是一个EJB3.0的新手 ,经过几天的搜索资料和自己的许多次测试,终于实现了ejb3、spring、struts2的整合,在这里写明一下简单的实现过程,希望对新入门的网友有所帮助,也请高手们不要拍砖,多多提出您的意见,在此...
ejb3整合Struts1.x实例 数据库使用的是mysql 5.x
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第5章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则...
ejb3+spring+struts实现简单银行系统
3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够用 3)资源管理和组件的声明周期的管理; 4)远程的调用:屏蔽了很多细节 5)并发请求 ( EJB都是单...
均是从网上搜的。 很有用的学习资料,特别是对于初学者很有用。 JAR命令使用.txt JavaEE框架图.gif ...weblogic ejb3 入门与提高5.txt weblogic ejb3 入门与提高52.txt weblogic ejb3 入门与提高6.txt
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part5 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part3 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司...
这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到实际开发中。该案例采用目前最流行、最规范的java ee架构,整个应用...
jboss-4.2.2.GA.zip、jdk-1_5_0_14-windows-i586-p.exe、mysql-5.0.22-win32.zip几个构建EJB环境及开发工具包,方便用户直接调用。 三、ejb-3_0-fr-spec-ejbcore.pdf、ejb-3_0-fr-spec-persistence.pdf、ejb-3_0-fr...