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

EJB3 发布WebService及客户端调用

发布时间:2020-12-17 02:02:17 所属栏目:安全 来源:网络整理
导读:?? ?EJB3发布WebService很简单,但是在客户端调用上却遇到了太多的问题,差不多一天的时间终于搞定了,下面是整个过程,我的服务器采用Weblogic10.3 ? 发布WebService ? ?? ?/** ?? ? * @author 王硕 ?? ? **/ ?? ?@WebService ?? ?@SOAPBinding(style=SOAPBi

?? ?EJB3发布WebService很简单,但是在客户端调用上却遇到了太多的问题,差不多一天的时间终于搞定了,下面是整个过程,我的服务器采用Weblogic10.3

?

发布WebService

?

?? ?/**

?? ? * @author 王硕

?? ? **/

?? ?@WebService

?? ?@SOAPBinding(style=SOAPBinding.Style.DOCUMENT)

?? ?public interface WS {

?

?? ? ? ?public int sum(int x,int y);

?

?? ?}

?

?? ?/**

?? ? * @author 王硕

?? ? **/

?? ?@Stateless

?? ?@WebService(serviceName="WSService")

?? ?public class WSImpl implements WS {

?

?? ? ? ?@WebMethod

?? ? ? ?public int sum(int x,int y) {

?? ? ? ? ? ?return x + y;

?? ? ? ?}

?

?? ?}

?

部署到Weblogic上,WebService就发布成功了,可以查看WL Console,也可以直接访问http://localhost:7001/WSImpl/WSService?wsdl查看是否成功,这里需要注意的是,WS上的@WebService是必须要有的,因为最后这个接口是要被打成jar供调用Service的客户端使用的,如果没有这个注解的话,Container是无法识别他为一个Service Interface的, 我这里是将session bean作为服务发布的,这样做的好处不少书籍中都介绍了,我这里就不多说了,下面就客户端的调用,我这里建立了一个新的project,过程如下:

?? ?/**

?? ? * 负责调用WS的Client

?

?? ? * @author 王硕

?? ? **/

?? ?@WebServiceClient(wsdlLocation="http://localhost:7001/WSImpl/WSService?wsdl")

?? ?public class WSProxy extends Service {

?

?? ? ? ?public WSProxy(URL wsdlDocumentLocation,QName serviceName) {

?? ? ? ? ?super(wsdlDocumentLocation,serviceName);?

?? ? ? ?}

?

?? ? ? ?public int proxySum() {

?

?? ? ? ? ?int result = 0;

?

?? ? ? ? ?WS ws = this.getPort(WS.class);

?? ? ? ? ?result = ws.sum(1,1);

?

?? ? ? ? ?return result;

?

?? ? ? ?} ? ? ??

?

?? ?}

?

?? ?/**

?

?? ? * @author 王硕

?? ? **/

?? ?@Local

?? ?public interface WSInvoke {

?? ? ? ?public int sum();

?? ?}

?

?? ?/**

?

?? ? * @author 王硕

?? ? **/

?? ?@Stateless

?? ?public class WSInvokeImpl implements WSInvoke {

?

?? ? ?@WebServiceRef

?? ? ?private WSProxy proxy;

?

?? ? ?public int sum() {

?? ? ? ?return proxy.proxySum();

?? ? ?}

?

?? ? ?public void setProxy(WSProxy proxy) {

?? ? ? ?this.proxy = proxy;

?? ? ?}

?

?? ? ?public WSProxy getProxy() {

?? ? ? ?return proxy;

?? ? ?}

?

?? ?}

?

将这个session bean注入servlet就可以访问了,这里需要注意的是WS这个接口,这个接口是发布WebService时对应的Service Interface,调用Service的应用一般是独立的应用,当然不会有这个WS,通常如果发布WebService,也会提供相应的Service Interface让你下载加入到自己的应用中,而我们这里只是测试一下,不用那么麻烦,所以可以创建一个与发布时一模一样的WS接口来做测试,但是在创建的时候请注意,这里WS的package必须和发布时的WS的package一致,因为发布时我这里只用了最简单的配置,没有指定发现空间,所以默认采用的是对应的package,所以这里如果是自己创建WS的话,package必须一致,这样Container会根据其package到相应的发布空间查找对应的服务,通常是相应的发布者把对应的Service Interface打成jar供大家下载,加入到自己的应用中,所以package肯定是一致的,所以这里大家还是要注意一些的,以上就是EJB3 发布与调用WebServicer的整个过程了,希望对大家有帮助,当然方式肯定不是只有这一种,欢迎大家一起交流.

(编辑:李大同)

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

    推荐文章
      热点阅读