xFire 实现webservice
java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料
保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。
实现webservice所需的jar包
服务器端实现:
业务接口实现:
package com.sk.core.webservice.server;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface QzqdServer {
public String saveQzqd(String message);
public String updateQzqd(String message);
public String deleteQzqd(String message);
}
业务实现类:
package com.sk.core.webservice.server.impl;
import java.util.HashMap;
import java.util.Iterator;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.xfire.transport.http.XFireServletController;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sk.cms.entity.main.CmsSite;
import com.sk.cms.entity.main.CmsUser;
import com.sk.cms.entity.main.Content;
import com.sk.cms.entity.main.ContentExt;
import com.sk.cms.entity.main.ContentTxt;
import com.sk.cms.entity.main.ContentType;
import com.sk.cms.manager.main.CmsSiteMng;
import com.sk.cms.manager.main.CmsUserMng;
import com.sk.cms.manager.main.ContentMng;
import com.sk.cms.web.CmsUtils;
import com.sk.cms.web.WebErrors;
import com.sk.core.manager.UnifiedUserMng;
import com.sk.core.webservice.server.QzqdServer;
@Service
public class QzqdServerImpl implements QzqdServer{
private static Log log=LogFactory.getLog(QzqdServerImpl.class);
@Autowired
private ContentMng contentMng;
@Autowired
private CmsUserMng cmsUserMng;
@Autowired
private UnifiedUserMng unifiedUserMng;
@Autowired
private CmsSiteMng cmsSiteMng;
/**
* json 数据格式{"title":"","channelId":"","typeId":"","attr":{
* "codeId":"","code":"","xzzqsx":"","xzzqmc":"",.......
* },"username":"","password":""}
*/
public String saveQzqd(String message) {
HashMap
try{
//HttpServletRequest request = XFireServletController.getRequest();
CmsSite site = cmsSiteMng.findById(1);
JSONObject json =new JSONObject(message);
String title=json.getString("title");
String channelId=json.getString("channelId");
String username=json.getString("username");
String password=json.getString("password");
String picPath=null;
String picDesc=null;
if(json.has("picPath")){
picPath=json.getString("picPath");
}
if(json.has("picDesc")){
picDesc=json.getString("picDesc");
}
//String typeId=json.getString("typeId");
HashMap
Content bean=new Content();
ContentExt ext=new ContentExt();
ContentTxt txt=new ContentTxt();
Integer[] channelIds = null;
Integer[] topicIds = null;
Integer typeId=1;
Integer[] viewGroupIds = null;
String[] attachmentPaths = null;
String[] attachmentNames =null;
String[] attachmentFilenames = null;
String[] picPaths={picPath};
String[] picDescs = {picDesc};
String[] tagArr = null;
Boolean draft = null;
CmsUser user = cmsUserMng.findById(unifiedUserMng.getByUsernameAndPass(username, password).getId());// 获取管理员用户
if(null!=user&&!user.getDisabled()){
bean.setUser(user);
bean.setAttr(attr);
bean.setSite(site);
ext.setTitle(title);
bean=contentMng.save(bean, ext, txt, channelIds, topicIds, viewGroupIds,
tagArr, attachmentPaths, attachmentNames, attachmentFilenames,
picPaths, picDescs, Integer.valueOf(channelId), typeId, draft, user, false);
messMap.put("status", "1");
messMap.put("contentId",String.valueOf(bean.getId()));
}else{
messMap.put("status", "0");
messMap.put("message", "用户名或密码错误");
}
}catch(org.json.JSONException e){
messMap.put("status", "0");
messMap.put("message", "必需参数存在空值");
log.info(e.getMessage());
}
catch(java.lang.NullPointerException e){
messMap.put("status", "0");
messMap.put("message", "用户名或密码错误");
log.info(e.getMessage());
}
catch(Exception e){
messMap.put("status", "0");
messMap.put("message", "数据保存异常");
log.info(e.getMessage());
}
JSONObject object=new JSONObject(messMap);
return object.toString();
}
public String updateQzqd(String message) {
HashMap
try{
//HttpServletRequest request = XFireServletController.getRequest();
CmsSite site = cmsSiteMng.findById(1);
JSONObject json =new JSONObject(message);
String title=null;
if(json.has("title")){
title=json.getString("title");
}
String picPath=null;
String picDesc=null;
if(json.has("picPath")){
picPath=json.getString("picPath");
}
if(json.has("picDesc")){
picDesc=json.getString("picDesc");
}
String cid=null;
Integer channelId=null;
if(json.has("channelId")){
cid=json.getString("channelId");
if(cid!=null&&!"".equals("")){
channelId=Integer.valueOf(cid);
}
}
String username=json.getString("username");
String password=json.getString("password");
String id=json.getString("id");
HashMap
if(json.has("attr")){
attr=toHashMap(json.getString("attr"));
}
Content bean=new Content();
ContentExt ext=new ContentExt();
ContentTxt txt=new ContentTxt();
Integer[] channelIds = null;
Integer[] topicIds = null;
Integer typeId=1;
Integer[] viewGroupIds = null;
String[] attachmentPaths = null;
String[] attachmentNames =null;
String[] attachmentFilenames = null;
String[] picPaths = {picPath};
String[] picDescs = {picDesc};
String[] tagArr = null;
Boolean draft = null;
CmsUser user = cmsUserMng.findById(unifiedUserMng.getByUsernameAndPass(username, password).getId());// 获取管理员用户
if(null!=user&&!user.getDisabled()){
bean.setId(Integer.valueOf(id));
bean.setUser(user);
//bean.setAttr(attr);
bean.setSite(site);
if(title!=null&&!"".equals(title)){
ext.setTitle(title);
}
ext.setId(Integer.valueOf(id));
bean=contentMng.update(bean, ext, txt, tagArr, channelIds, topicIds, viewGroupIds, attachmentPaths, attachmentNames, attachmentFilenames, picPaths, picDescs, attr, channelId, typeId, draft, user, false);
messMap.put("status", "1");
messMap.put("contentId",String.valueOf(bean.getId()));
}else{
messMap.put("status", "0");
messMap.put("message", "用户名或密码错误");
}
}catch(org.json.JSONException e){
messMap.put("status", "0");
messMap.put("message", "必需参数存在空值");
log.info(e.getMessage());
}
catch(java.lang.NullPointerException e){
messMap.put("status", "0");
messMap.put("message", "用户名或密码错误");
log.info(e.getMessage());
}
catch(Exception e){
messMap.put("status", "0");
messMap.put("message", "数据跟新异常");
log.info(e.getMessage());
e.printStackTrace();
}
JSONObject object=new JSONObject(messMap);
return object.toString();
}
public String deleteQzqd(String message) {
HashMap
try{
JSONObject json =new JSONObject(message);
String id=json.getString("id");
String username=json.getString("username");
String password=json.getString("password");
CmsUser user = cmsUserMng.findById(unifiedUserMng.getByUsernameAndPass(username, password).getId());// 获取管理员用户
if(null!=user&&!user.getDisabled()){
Content bean=contentMng.deleteById(Integer.valueOf(id));
messMap.put("status", "1");
messMap.put("contentId",String.valueOf(bean.getId()));
}else{
messMap.put("status", "0");
messMap.put("message", "用户名或密码错误");
}
}catch(org.json.JSONException e){
messMap.put("status", "0");
messMap.put("message", "必需参数存在空值");
log.info(e.getMessage());
}
catch(java.lang.NullPointerException e){
messMap.put("status", "0");
messMap.put("message", "用户名或密码错误");
log.info(e.getMessage());
}
catch(Exception e){
messMap.put("status", "0");
messMap.put("message", "数据保存异常");
log.info(e.getMessage());
}
JSONObject object=new JSONObject(messMap);
return object.toString();
}
/**
* 将json格式的字符串解析成Map对象
* json格式:{"name":"admin","retries":"3fff","testname"
* :"ddd","testretries":"fffffffff"}
* @throws JSONException
*/
private HashMap
{
HashMap
// 将json字符串转换成jsonObject
JSONObject jsonObject = new JSONObject(object);
Iterator it = jsonObject.keys();
// 遍历jsonObject数据,添加到Map对象
while (it.hasNext())
{
String key = String.valueOf(it.next());
String value = jsonObject.getString(key);
data.put(key, value);
}
return data;
}
}
在web.xml文件中添加:
xfire-servlet.xml文件
"http://www.springframework.org/dtd/spring-beans.dtd">
客户端测试类:
package sktask;
import java.net.URL;
import java.util.Date;
import org.apache.commons.httpclient.util.HttpURLConnection;
import org.codehaus.xfire.client.Client;
public class WebServiceTest {
public boolean newMessage() {
Client client;
try {
client = new Client(
new URL(
"http://localhost:9090/service/XFireServlet/QzqdServer?wsdl"));
// 根据WSDL创建客户实例
String[] objArray = new String[1];
objArray[0] = "{'id':'14315','picPath':'http://dpxq.gov.cn/u/cms/www/201603/011705420vfw.jpg','title':'test修改222','username':'webqzqd','password':'e10adc3949ba59abbe56e057f20f883e'}";
//objArray[0] = "{'picPath':'http://dpxq.gov.cn/u/cms/www/201603/011705420vfw.jpg','title':'test2','channelId':'786','username':'webqzqd','password':'e10adc3949ba59abbe56e057f20f883e'}";
//objArray[0] = "{'id':'14314','username':'webqzqd','password':'e10adc3949ba59abbe56e057f20f883e'}";
// 调用特定的Web Service方法
//Object[] results = client.invoke("saveQzqd", objArray);
Object[] results = client.invoke("updateQzqd", objArray);
//Object[] results = client.invoke("deleteQzqd", objArray);
System.out.println("newMessage result: " + results[0]);
return Boolean.parseBoolean(results[0].toString());
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args){
WebServiceTest test=new WebServiceTest();
test.newMessage();
}
}
javawebwebservicexfire
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。
支付宝扫一扫
微信扫一扫
