微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EJB3 发布WebService及客户端调用

    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的整个过程了,希望对大家有帮助,当然方式肯定不是只有这一种,欢迎大家一起交流.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐