1、引入CXF相关jar包
2、配置web.xml文件
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3、编写服务端接口和实现类
4、编写webservice配置文件
<jaxws:server id="GroupChgWService" serviceClass="xx.xx.xx.wservice.IGroupChgService" address="/UpdateGroupSoap">
<jaxws:serviceBean>
<bean class="xx.xx.xx.wservice.impl.GroupChgServiceImpl" >
<property name="groupService">
<ref bean="right_groupService"/>
</property>
</bean>
</jaxws:serviceBean>
</jaxws:server>
黄色为发布webservice的接口,蓝色为webservice接口的实现类,灰色为发布的webservice接口的名字,紫色为该webservice接口的实现类里引用的其他service或者dao,在spring的配置文件里有"right_groupService的对应配置文件
客户端调用webservice接口,如下:
public String UpdateRoleServices(final String operatorId, String groupId, String userId){
StringBuffer body = new StringBuffer();
body.append("<BODY>");
body.append("<OPERATORID>").append(operatorId).append("</OPERATORID>");
body.append("<OPERATORPWD>").append(user.getPwd()).append("</OPERATORPWD>");
body.append("<OPERATORIP>").append("ip").append("</OPERATORIP>");
body.append("<USERLIST>");
body.append("<USERINFO>");
body.append("<USERID>").append(u.getUserid()).append("</USERID>");
List<UserRole> userRoles = this.getRolesByUserId(u.getUserid());
body.append("<ROLELIST>");
for(UserRole role : userRoles){
body.append("<ROLE>");
body.append("<ID>"+role.getRoleId()+"</ID>");
body.append("<NAME>"+role.getRoleName()+"</NAME>");
body.append("<ORGID>"+role.getCreateGroup()+"</ORGID>");
body.append("<EFFECTDATE>"+role.getBeginDate()+"</EFFECTDATE>");
body.append("<EXPIREDATE>"+role.getEndDate()+"失效时间</EXPIREDATE>");
body.append("</ROLE>");
}
body.append("</ROLELIST>");
body.append("</USERINFO>"); }
body.append("</USERLIST>");
body.append("</BODY>");
String reqXml = WsUtil.genReqXml("USERROLEMODIFYREQ", body.toString());//组装成一个完整的xml请求报文
//以下调用ws接口
QName serviceName = new QName("CommonWebServiceService");
QName portName = new QName("UpdateRoleServices");
String endpointAddress = this.getWsUrl()+"UpdateRoleServices";
Service service = Service.create(serviceName);
service.addPort(portName, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
Dispatch<Source> dispatcher = service.createDispatch(portName,
Source.class, Service.Mode.PAYLOAD);
Map<String, Object> requestContext = dispatcher.getRequestContext();
StringBuffer reqBuffer = new StringBuffer();
reqBuffer.append("<UpdateRoleServices>");
reqBuffer.append("<RequestInfo type='string'><![CDATA["+reqXml+"]]></RequestInfo>");
reqBuffer.append("</UpdateRoleServices>");
org.w3c.dom.Document doc = null;
try {
StringReader sr = new StringReader(reqBuffer.toString());
InputSource is = new InputSource(sr);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
doc = builder.parse(is);
DOMSource reqMsg = new DOMSource(doc);
requestContext.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
requestContext.put(BindingProvider.SOAPACTION_URI_PROPERTY, "");
requestContext.put(MessageContext.HTTP_REQUEST_METHOD, "POST");
Source result = dispatcher.invoke(reqMsg);
} catch (ParserConfigurationException e) {
log.debug(e);
} catch (SAXException e) {
log.debug(e);
} catch (IOException e) {
log.debug(e);
} catch (Exception e) {
log.debug(e);
}
return "";
}