1. 将EJB发布成,或者说暴露成Web服务(也许更贴切),在EJB容器中不是困难的事情,只要容器实现了JavaEE的JAX-WS标准就行了,开发人员要做的就是增加一点点有关WebService的注解,打包发布到应用容器即可。不过在笔者使用JBoss5作为EJB容器的时候,调用Web服务出现了异常~~~最后发现是JDK版本的问题,改用JDK1.5编译EJB类、启动JBoss后才能正常调用。这个问题先留着,回头使用JBoss6的时候在试试吧~~~~
2. helloworld服务端代码
服务端不用再强制规定WebService必须实现一个接口了,而一个普通的POJO+EJB注解的类就可以当做WebService服务器类。
代码如下:
package webservice.HelloWebService;
import javax.ejb.Stateless;
import javax.jws.WebService;
@Stateless
@WebService(name = "HelloWebService")
public class HelloWebService {
public String sayHello(String name) {
System.out.println("客户端调用了服务器端的代码");
return "你好:" + name+",传授给你武功--旋空斩";
}
}
|
将此类打包部署到JBoss容器中,重启JBoss,打开链接
http://127.0.0.1:8080/jbossws看到如下界面

选择View a list of deployed services查看webservice列表

点击链接即可看到WSDL文档
<definitions name='HelloWebServiceService' targetNamespace='http://HelloWebService.webservice/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://HelloWebService.webservice/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<types>
<xs:schema targetNamespace='http://HelloWebService.webservice/' version='1.0' xmlns:tns='http://HelloWebService.webservice/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='sayHello' type='tns:sayHello'/>
<xs:element name='sayHelloResponse' type='tns:sayHelloResponse'/>
<xs:complexType name='sayHello'>
<xs:sequence>
<xs:element minOccurs='0' name='arg0' type='xs:string'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='sayHelloResponse'>
<xs:sequence>
<xs:element minOccurs='0' name='return' type='xs:string'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name='HelloWebService_sayHelloResponse'>
<part element='tns:sayHelloResponse' name='sayHelloResponse'></part>
</message>
<message name='HelloWebService_sayHello'>
<part element='tns:sayHello' name='sayHello'></part>
</message>
<portType name='HelloWebService'>
<operation name='sayHello' parameterOrder='sayHello'>
<input message='tns:HelloWebService_sayHello'></input>
<output message='tns:HelloWebService_sayHelloResponse'></output>
</operation>
</portType>
<binding name='HelloWebServiceBinding' type='tns:HelloWebService'>
<soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='sayHello'>
<soap:operation soapAction=''/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
</operation>
</binding>
<service name='HelloWebServiceService'>
<port binding='tns:HelloWebServiceBinding' name='HelloWebServicePort'>
<soap:address location='http://127.0.0.1:8080/EJBWebService/HelloWebService'/>
</port>
</service>
</definitions>
|
1. 客户端测试程序
我们使用IDE工具生成客户端代码,在MyEclipse中选择new菜单,选择Web服务客户端,如下图所示

选择生成代码的目标项目和类型

之后输入WSDL文档的URL位置,如下图所示

之后选择Next进入加入依赖包的选项

如果不加入任何依赖包也可以,可以手工下载CXF项目(http://cxf.apache.org/),将它的lib下的wsdl4j-version.jar、XmlSchema-version.jar拷贝到客户端Classpath下面就行。
之后生成的代码如下

其中HelloWebServiceService是需要客户端稍微关心一下的类,客户端调用这个类的方法就能调到服务器端的代码。测试程序如下
public static void main(String[] args) {
HelloWebServiceService helloWebServiceService = new HelloWebServiceService();
HelloWebService helloWebService = helloWebServiceService.getHelloWebServicePort();
System.out.println(helloWebService.sayHello("单锋剑尊"));
}
|

- 大小: 55.7 KB

- 大小: 28.8 KB

- 大小: 53 KB

- 大小: 40.1 KB

- 大小: 54.4 KB

- 大小: 43.4 KB

- 大小: 21.4 KB
分享到:
相关推荐
### JavaEE5学习笔记09-将EJB发布成WebService总结 #### 一、EJB与WebService概述 在Java EE 5(Java Platform, Enterprise Edition)中,企业级应用程序的开发变得更为简单和灵活。EJB(Enterprise JavaBeans)...
在JavaEE5中,可以将EJB组件发布成WebService,这样就能够提供跨平台的网络服务接口,便于不同系统之间的互操作性。 8. JavaMail:JavaMail是JavaEE5用于发送和接收邮件的一个API,它支持SMTP和IMAP协议,使得...
### JavaEE 学习笔记概览 #### 一、JavaEE 概念及发展历程 JavaEE(Java Platform, Enterprise Edition)是Sun Microsystems公司为简化企业级应用开发而提出的一套标准化平台,它提供了构建分布式系统的基本框架和...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。