spring中配置webservice及其基础开发(java)

spring中配置webservice及其基础开发(java)

2023年6月28日发(作者:)

一、 spring配置文件

在spring配置文件中加入如下配置

首先加入声明:

xmlns:jaxws=/jaxws

/jaxws /schemas/

位置如图所示

然后做webservice配置

resource="classpath:META-INF/cxf/" />

address="/ReceiveSignature"

implementorClass="veSignatureService">

class="eSignatureServiceI

mpl">

图1

说明:

图2

如图2所示这三行是固定要引入的。

图3

如图3所示这个是webservice的配置,address是最后发布的webservice的url配置 implementorClass是webservice的接口类,节点中定义的是webservice的实现类,这两段代码的插入位置如图1所示。

二、 配置

在中加入如下配置:

vlet1

et-class>

CXFServlet

/services/*

CXFServlet

图4

其中节点必须配置为1,

/services/*这个节点配置的是项目所过滤的url,自定义即可。

三、 接口类

package e;

import hod;

import am;

import ult;

import vice;

import eSignatureResponse;

@WebService(serviceName="ReceiveSignature")

public interface IReceiveSignatureService {

@WebMethod(operationName="ReceiveSignature")

public

@WebResult(name="receiveSignatureResult")ReceiveSignatureResponse

receiveSignature(

}

@WebParam(name="SVC_USER_CODE")String svcUserCode,

@WebParam(name="CHARGENO")String chargeNo,

@WebParam(name="FORM_CONTENT")String formContent

);

图示:

图5

其中:

@WebService(serviceName="ReceiveSignature")声明webservice名称。

@WebMethod(operationName="ReceiveSignature")声明要暴露出来的webservice方法。

@WebResult(name="receiveSignatureResult")声明返回的xml中的结果节点名称。

@WebParam(name="SVC_USER_CODE")声明方法参数(即与请求xml中的节点名对应)

四、 实现类

package e;

import vice;

import eSignatureResponse;

import l;

import ;

import rService;

import il;

@WebService(endpointInterface="veSignatureService")

public class ReceiveSignatureServiceImpl implements

IReceiveSignatureService {

public ReceiveSignatureResponse receiveSignature(String svcUserCode,

String chargeNo, String formContent) {

User user = ("sysadmin");

n(rId());

ReceiveSignatureResponse aaa = new ReceiveSignatureResponse();

rgeNo(chargeNo);

mContent(formContent);

UserCode(svcUserCode);

n("**********************chargeNo:

IDBUserService service = (IDBUserService)

n(); "+chargeNo);

}

}

n("**********************svcUserCode:

n("**********************formContent:

(chargeNo, formContent);

return aaa;

"+svcUserCode);

"+formContent);

图示:

图6

其中红色部分为

IDBUserService service = (IDBUserService)

n();

这样就能在这里取到需要用的service实体,比如人员管理的service。

@WebService(endpointInterface="veSignatureService")该声明中必须指定接口类的包路径

五、 webservice方法返回的结果对象

package es;

import essType;

import essorType;

import ment;

import tElement;

@XmlRootElement(name="receiveSignatureResult")

@XmlAccessorType()

public class ReceiveSignatureResponse {

@XmlElement(name="SVC_USER_CODE")

private String svcUserCode;

@XmlElement(name="CHARGENO")

private String chargeNo;

@XmlElement(name="FORM_CONTENT")

private String formContent;

public String getSvcUserCode() {

return svcUserCode;

}

public void setSvcUserCode(String svcUserCode) {

rCode = svcUserCode;

}

public String getChargeNo() {

return chargeNo;

}

public void setChargeNo(String chargeNo) {

No = chargeNo;

}

public String getFormContent() {

return formContent;

}

public void setFormContent(String formContent) {

ntent = formContent;

}

}

图示: 图7

其中红色部分标注的

@XmlRootElement(name="receiveSignatureResult")声明了返回xml中的body节点下的第一个节点名称,跟调用ESB接口的时候编写的bean同理。

@XmlAccessorType()固定这么写

六、 请求报文与返回报文示例

Wsdl:

localhost:8081/MobileAdapter/services/ReceiveSignature?wsdl

请求报文:

xmlns:ser="/">

q

w

e

图示:

图8

返回报文:

q

w

e

图示: 图9

因为例子中所写的三个请求参数在webservice方法中直接做了返回,固请求报文与返回报文基本相同,请根据实际情况。

七、 ESB请求报文头拦截示例

要拦截请求报文头,需要配置拦截器,拦截器配置如下:

在spring配置文件中加入

/bean>

class="viceInterceptor"><

图示(在上面所述基础之上):

图10

文件源码:

package eptor;

import or;

import ;

import ssage;

import ;

import ;

import ctPhaseInterceptor;

import ;

public class WebServiceInterceptor extends

AbstractPhaseInterceptor {

{

}

}

@Override

public void handleFault(SoapMessage message) {

}

Fault(message);

}

Header header = (Header) ();

n(aBinding());

n(ection());

n(e());

@Override

public void handleMessage(SoapMessage msg) throws Fault {

List

headers = ders();

for (Iterator iterator = or(); t();)

public WebServiceInterceptor() {

}

//指定拦截器在哪个阶段触发

super(_INVOKE);

其中super(_INVOKE)指定了需要在什么时候触发拦截器,这里的配置指定请求到来的时候首先拦截请求,处理后再进入webservice的方法。

public void handleMessage(SoapMessage msg)方法是要实现的消息处理方法。

public void handleFault(SoapMessage message)方法是处理错误的。 图示:

图11

请求报文中加入头节点:

xmlns:ser="/">

123

w

qwe

asd

图示: 图12

那么在收到请求的时候可以得到头信息:

图13

八、 请求参数为对象

方法定义为:

package e;

import hod;

import am;

import ult;

import vice;

import eSignatureRequest;

import eSignatureResponse;

@WebService(serviceName="ReceiveSignature")

public interface IReceiveSignatureService {

@WebMethod(operationName="ReceiveSignature")

public

@WebResult(name="receiveSignatureResult")ReceiveSignatureResponse

receiveSignature(

}

其中@WebParam(name="request")ReceiveSignatureRequest req 中的name="request"与请求报文中的节点对应,如图14:

@WebParam(name="request")ReceiveSignatureRequest req

);

图14

请求对象定义为:

package es;

import essType;

import essorType;

import ment;

import e;

@XmlType(name="ReceiveSignatureRequest")

@XmlAccessorType()

public class ReceiveSignatureRequest {

@XmlElement(name="SVC_USER_CODE")

private String svcUserCode;

}

@XmlElement(name="CHARGENO")

private String chargeNo;

@XmlElement(name="FORM_CONTENT")

private String formContent;

public String getSvcUserCode() {

}

public void setSvcUserCode(String svcUserCode) {

}

public String getChargeNo() {

}

public void setChargeNo(String chargeNo) {

}

public String getFormContent() {

}

public void setFormContent(String formContent) {

}

ntent = formContent;

return formContent;

No = chargeNo;

return chargeNo;

rCode = svcUserCode;

return svcUserCode;

其中@XmlType(name="ReceiveSignatureRequest")

必须写在最上面

九、 返回xml只有header的情况

方法定义中给返回值的声明加上如下属性:

@WebService(serviceName="ReceiveSignature")

public interface IReceiveSignatureService {

@WebMethod(operationName="ReceiveSignature")

public

@WebResult(name="receiveSignatureResult",header=true)ReceiveSignatureResponse receiveSignature(

@WebParam(name="request")ReceiveSignatureRequest req

); }

如图15所示:

图15

返回xml即如下:

1

2

3

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687888235a54126.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信