加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Ejb发布成webservice

发布时间:2020-12-16 22:55:48 所属栏目:安全 来源:网络整理
导读:1.???????将EJB发布成,或者说暴露成Web服务(也许更贴切),在EJB容器中不是困难的事情,只要容器实现了JavaEE的JAX-WS标准就行了,开发人员要做的就是增加一点点有关WebService的注解,打包发布到应用容器即可。不过在笔者使用JBoss5作为EJB容器的时候,调

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("单锋剑尊"));

????}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读