2019-06-03 webservice 使用方法舉例

import com.xxx.myauthority.bean.baseBean.Header;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

/*角色類變更請求xml對應的bean*/

// xml 文件的根元素 將Java類或枚舉類型映射到XML元素(必須使用 指定xml跟元素)

@XmlRootElement(name ="REQUEST")

@XmlAccessorType(XmlAccessType.FIELD)

public class RoleChangeRequest {

@XmlElement(name ="HEAD")

private Headerhead;

@XmlElement(name ="BODY")

private RoleChangeRequestBodybody;

public Header getHead() {

return head;

}

public void setHead(Header head) {

this.head = head;

}

public RoleChangeRequestBody getBody() {

return body;

}

public void setBody(RoleChangeRequestBody body) {

this.body = body;

}

}

//body 中帶list 的 方式 舉例

import javax.xml.bind.annotation.*;

import java.util.List;

@XmlAccessorType(XmlAccessType.FIELD)

public class RoleChangeRequestBody {

@XmlElement(name ="OPERATORID")

private StringOperatorId;

@XmlElement(name ="AUTHORTYPE")

private StringauthorType;

@XmlElementWrapper(name="AUTHORLIST")

@XmlElement(name ="AUTHORINFO")

private ListAuthorList;

public String getOperatorId() {

return OperatorId;

}

public void setOperatorId(String operatorId) {

OperatorId = operatorId;

}

public String getAuthorType() {

return authorType;

}

public void setAuthorType(String authorType) {

this.authorType = authorType;

}

public List getAuthorList() {

return AuthorList;

}

public void setAuthorList(List authorList) {

AuthorList = authorList;

}

}


// 接口

import org.springframework.transaction.annotation.Transactional;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebResult;

import javax.jws.WebService;

@WebService

@Transactional

public interface UpdateAppAuthorServices {

@WebMethod

? ? String getRequestInfo(@WebParam(name ="requestInfo") String requestInfo);

}

//實現(xiàn)類

@WebService(targetNamespace="http://service.myauthority.zbiti.com/",endpointInterface ="com.zbiti.myauthority.service.UpdateAppAuthorServices")

public class UpdateAppAuthorServicesImplimplements UpdateAppAuthorServices {

Loggerlogger = LoggerFactory.getLogger(getClass());

@Autowired

? ? private SysUserRoleMapperauthorityMapper;

@Autowired

? ? private SysRoleMappermapper;

@Override

? ? public String getRequestInfo(String requestInfo) {

logger.info(requestInfo);

JAXBContext context =null;

RoleChangeResponse response = getRoleChangeResponse();

List list =new ArrayList<>();

try {

//讀xml 進入RoleChangeRequest

? context = JAXBContext.newInstance(RoleChangeRequest.class);

Unmarshaller unmarshaller = context.createUnmarshaller();

RoleChangeRequest roleChangeRequest = (RoleChangeRequest) unmarshaller.unmarshal(new StringReader(requestInfo));

}catch (Exception e) {

logger.error("解析xml 到bean 出錯", e);

list.add(new ResponseAuthorInfo("4","解析xml文件出錯" + e.getMessage(),null,null,null));

}

response.getRbody().setResponseAuthorInfoList(list);

String xml1 = MyUtils.object2Xml(response);

return xml1;

}

//對象到xml

public static String object2Xml(Object object){

try

? ? {

StringWriter writer =new StringWriter();

JAXBContext context = JAXBContext.newInstance(object.getClass());

Marshaller marshal = context.createMarshaller();

marshal.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);// 格式化輸出

? ? ? ? marshal.setProperty(Marshaller.JAXB_ENCODING,"UTF-8");// 編碼格式,默認為utf-8

? ? ? ? marshal.setProperty(Marshaller.JAXB_FRAGMENT,false);// 是否省略xml頭信息

? ? ? ? marshal.setProperty("jaxb.encoding","utf-8");

marshal.marshal(object,writer);

return new String(writer.getBuffer());

}catch (Exception e) { e.printStackTrace();return null;}

}

// webservice 服務發(fā)布

import com.xxx.myauthority.service.*;

import org.apache.cxf.Bus;

import org.apache.cxf.bus.spring.SpringBus;

import org.apache.cxf.jaxws.EndpointImpl;

import org.apache.cxf.transport.servlet.CXFServlet;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.web.servlet.ServletRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import javax.xml.ws.Endpoint;

@Configuration

public class WebServiceConfig {

@Bean

? ? public ServletRegistrationBean dispatcherServlet(){

return new ServletRegistrationBean(new CXFServlet(),"/services/*");//發(fā)布服務名稱

? ? }

@Bean(name = Bus.DEFAULT_BUS_ID)

public SpringBus springBus()

{

return? new SpringBus();

}

@Bean

? ? public UpdateAppAuthorServices updateAppAuthorServices()

{

return? new UpdateAppAuthorServicesImpl();

}

@Bean

? ? public UpdateAppAuthorRelServices updateAppAuthorRelServices(){

return? new UpdateAppAuthorRelServicesImpl();

}

@Bean

? ? public UpdateAppAcctAuthorServices updateAppAcctAuthorServices(){

return? new UpdateAppAcctAuthorServicesImpl();

}

@Bean

? ? public UpdateAppAcctSoap updateAppAcctSoap(){

return? new UpdateAppAcctSoapImpl();

}

@Bean

? ? public Endpoint endpointRole() {

EndpointImpl endpoint=new EndpointImpl(springBus(), updateAppAuthorServices());//綁定要發(fā)布的服務

? ? ? ? endpoint.publish("/updateAppAuthorServices");//顯示要發(fā)布的名稱

? ? ? ? return endpoint;

}

@Bean

? ? public Endpoint endpointRoleMenu() {

EndpointImpl endpoint=new EndpointImpl(springBus(), updateAppAuthorRelServices());//綁定要發(fā)布的服務

? ? ? ? endpoint.publish("/updateAppAuthorRelServices");//顯示要發(fā)布的名稱

? ? ? ? return endpoint;

}

@Bean

? ? public Endpoint endpointUser() {

EndpointImpl endpoint=new EndpointImpl(springBus(), updateAppAcctSoap());//綁定要發(fā)布的服務

? ? ? ? endpoint.publish("/updateAppAcctSoap");//顯示要發(fā)布的名稱

? ? ? ? return endpoint;

}

@Bean

? ? public Endpoint endpointUserRole() {

EndpointImpl endpoint=new EndpointImpl(springBus(), updateAppAcctAuthorServices());//綁定要發(fā)布的服務

? ? ? ? endpoint.publish("/updateAppAcctAuthorServices");//顯示要發(fā)布的名稱

? ? ? ? return endpoint;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钉蒲,更是在濱河造成了極大的恐慌宫仗,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钞速,死亡現(xiàn)場離奇詭異贷掖,居然都是意外死亡,警方通過查閱死者的電腦和手機渴语,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門苹威,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遵班,你說我怎么就攤上這事屠升。” “怎么了狭郑?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵腹暖,是天一觀的道長。 經(jīng)常有香客問我翰萨,道長脏答,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任亩鬼,我火速辦了婚禮殖告,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雳锋。我一直安慰自己黄绩,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布玷过。 她就那樣靜靜地躺著爽丹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辛蚊。 梳的紋絲不亂的頭發(fā)上粤蝎,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音袋马,去河邊找鬼初澎。 笑死,一個胖子當著我的面吹牛虑凛,可吹牛的內(nèi)容都是我干的碑宴。 我是一名探鬼主播软啼,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼墓懂!你這毒婦竟也來了焰宣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤捕仔,失蹤者是張志新(化名)和其女友劉穎匕积,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榜跌,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡闪唆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钓葫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悄蕾。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖础浮,靈堂內(nèi)的尸體忽然破棺而出帆调,到底是詐尸還是另有隱情,我是刑警寧澤豆同,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布番刊,位于F島的核電站,受9級特大地震影響影锈,放射性物質(zhì)發(fā)生泄漏芹务。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一鸭廷、第九天 我趴在偏房一處隱蔽的房頂上張望枣抱。 院中可真熱鬧,春花似錦辆床、人聲如沸佳晶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宵晚。三九已至,卻和暖如春维雇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晒他。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工吱型, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陨仅。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓津滞,卻偏偏與公主長得像铝侵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子触徐,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容