一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 基于CXF搭建webService的實(shí)例講解

基于CXF搭建webService的實(shí)例講解

2021-02-03 11:40水波粼粼 Java教程

下面小編就為大家?guī)?lái)一篇基于CXF搭建webService的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1.導(dǎo)入相關(guān)jar包,具體哪些包我記不太清了

2.在applicationContext中加入相關(guān)配置信息,如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-3.0.xsd
              http://cxf.apache.org/jaxws
              http://cxf.apache.org/schemas/jaxws.xsd">
 
    <context:component-scan base-package="com.cxf.bo"/>
   
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    
    <jaxws:endpoint
      id="OrderWS"
      implementor="com.cxf.spring.ws.OrderWSImpl"//類所在地址或者#+對(duì)應(yīng)bean的id
      address="/OrderWS" > //隨意命名
      <jaxws:features>
       <bean class="org.apache.cxf.feature.LoggingFeature" />
      </jaxws:features>
    </jaxws:endpoint>
</beans>

3.在web.xml文件中加入:

?
1
2
3
4
5
6
7
8
9
10
<!-- cxf配置 -->
   <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>/CXFServlet/*</url-pattern>
  </servlet-mapping>

4.在service層加入:

?
1
2
3
4
5
@WebService
public interface OrderWS {
  @WebMethod
  public Order getOrderById(int id);
}

5.若存在struts2,會(huì)發(fā)生沖突,則重寫(xiě)過(guò)濾器

5.1 寫(xiě)一個(gè)類ExtendStrutsFilter:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.nbu.retailer.filter;
 
import java.io.IOException;
 
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
 
public class ExtendStrutsFilter extends StrutsPrepareAndExecuteFilter{
  private static Logger log = LoggerFactory.getLogger(ExtendStrutsFilter.class);
  @Override
  public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain)
      throws IOException, ServletException {
      try {
        HttpServletRequest request = (HttpServletRequest) req;
        // 判斷是否是向WebService發(fā)出的請(qǐng)求
        if (request.getRequestURI().contains("/CXFServlet")) {
           // 如果是來(lái)自向CXFService發(fā)出的請(qǐng)求
           chain.doFilter(req, res);
         }
         else {
           // 默認(rèn)action請(qǐng)求
            super.doFilter(req, res, chain);
         }
       }
      catch (Exception e) {
         log.error(e.getMessage());
         e.printStackTrace();
      }
  }
 
}

5.2 在web.xml中改變過(guò)濾器的地址:

?
1
2
3
4
5
6
7
8
9
<!-- struts2的過(guò)濾器-->
   <filter>
    <filter-name>struts2</filter-name>
    <!--
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    -->
    <!-- 自定義struts2過(guò)慮器類 用于解決struts2把cxf的請(qǐng)求當(dāng)action處理的問(wèn)題-->
    <filter-class>com.nbu.retailer.filter.ExtendStrutsFilter</filter-class>
  </filter>

5.3 注意,CXF的url和struts2的url不能相同。之前就這個(gè)問(wèn)題困擾了我好久才發(fā)現(xiàn)的。

以上這篇基于CXF搭建webService的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/waterlily/p/7819641.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久成人伊人欧洲精品AV | 超级碰碰免费视频 | 太紧太深了受不了黑人 | 精品一二三区久久AAA片 | 日本妇人成熟免费不卡片 | 福利三区 | 放荡的女老板bd中文字幕 | bbc japanese黑人强行 | 国产性tv国产精品 | 三上悠亚精品专区久久 | 爱情岛论坛自拍永久入口 | 国产福利兔女郎在线观看 | 欧美老人与小伙子性生交 | 国产三级跑 | 成年人免费在线看的惊悚动作片 | 91色资源网在线观看 | 日本老妇和子乱视频 | 久久机热视频 这里只有精品首页 | 天堂va亚洲va欧美va国产 | 日本护士撒尿 | 国产一级持黄大片99久久 | 国产成人免费片在线视频观看 | 青草视频在线观看视频 | 亚洲国内精品久久 | 91精品国产综合久久精品 | julia ann黑人巨大 | 欧美国产合集在线视频 | 欧美vpswindows动物 | 国产美女亚洲精品久久久综合 | 青青草原免费在线视频 | 欧美va天堂va视频va在线 | 胸奶好大好紧好湿好爽 | 秀婷程仪公欲息肉婷在线观看 | 久久青青草视频在线观 | 秋霞午夜伦午夜高清福利片 | 女教师系列三上悠亚在线观看 | 五月激情丁香婷婷综合第九 | 免费看的毛片 | 黑人好大好硬好深好爽想要h | 国产日韩成人 | 色狠狠婷婷97 |