JAVAEE项目Service层与WebService的整合开发DEMO

至尊宝123 发表于:2018-08-23 21:53 阅读: 308次

在一个JAVAEE项目里,本身已经具有了MVC三层架构,开发流程一般是ACIONT—>SERVICE—>SERVICE实现类—>DAO持久层;那么如何在项目中添加WebService支持呢?下面我们来看下具体的案列。

咱们直接从service层说起:

Service层开发流程

Service层负责为表示层提供服务,如果要增加新的Service,需要修改一下类或接口,Xxx表示Service名称:

1、定义接口:com.zte.dus.service.idefine.IXxxService
接口需要继承接口:java.rmi.Remote
每个方法需要抛出异常:java.rmi.RemoteException
具体实现代码参考包内其他Service
2、编写Service实现类:com.zte.dus.service.biz.BizXxxServiceImpl
实现接口IxxxService
具体实现代码参考包内其他Service
3、编写WebService实现类:com.zte.dus.service.webservice.WSXxxServiceImpl
实现接口IxxxService
具体实现代码参考包内其他Service
4、发布WebService:
发布过程祥件后面章节。
5、生成WebService客户端:

com.zte.dus.proxy.axis.WSCodeService
com.zte.dus.proxy.axis.WSCodeServiceHttpBindingStub
com.zte.dus.proxy.axis.WSCodeServiceLocator

代码生成过程详见后面章节。

注意:每次对接口的修改都需要重新生成WebService客户端,
且生成之前先重启Web服务器。

6、修改Service代理类工厂:com.zte.dus.proxy.ProxyFactory
增加方法:public static IXxxService getXxxService()
具体实现代码参考包内其他Service
7、编写Service代理类:com.zte.dus.proxy.XxxServiceProxy
实现接口IxxxService
具体实现代码参考包内其他Service
8、表示层Action里面使用Service:
Action里面直接实例化com.zte.dus.proxy.XxxServiceProxy类。

WebService的发布

发布WebService的方法比较简单,只需要在配置文件/DUS/WebServices/services.xml里面增加一组<service></service>配置即可。代码如下:

<service xmlns="http://xfire.codehaus.org/config/1.0">
        <name>WSCodeService</name>
        <serviceClass>
            com.zte.dus.service.idefine.IXxxService
        </serviceClass>
        <implementationClass>
            com.zte.dus.service.webservice.WSXxxServiceImpl
        </implementationClass>
        <style>wrapped</style>
        <use>literal</use>
        <scope>application</scope>
    </service>

<serviceClass> 这个节点是Service接口

<implementationClass> 这个节点是Service的实现类

WebService客户端的生成

每次修改接口都需要重新生产WebService客户端,生产前请先重启Web服务器。
客户端生成批处理编写:

java -classpath ".;commons-logging.jar;axis.jar;commons-discovery.jar;jaxrpc.jar;wsdl4j.jar;saaj.jar;activation.jar;mail.jar" org.apache.axis.wsdl.WSDL2Java -o "clientcode" http://localhost:8088/DUS/services/WSXxxService?wsdl

运行批处理后将生成目录clientcode\com\zte\dus\service\idefine里面的:

WSXxxService.java
WSXxxServiceHttpBindingStub.java
WSXxxtemServiceLocator.java

拷贝到com.zte.dus.proxy.axis包中,并做如下替换:
package com.zte.dus.service.idefine 替换为 package com.zte.dus.proxy.axis
WSXxxServicePortType 替换为 IXxxService
service.idefine.WSXxxServiceHttpBindingStub
替换为 proxy.axis. WSXxxServiceHttpBindingStub
service.idefine.WSSystemService 替换为 proxy.axis.WSSystemService

酷码派 [KuMaPai.COM] - 陕ICP备案证 18010024号-2