基于CXF搭建webService的实例讲解

2025-05-27 0 85

1.导入相关jar包,具体哪些包我记不太清了

2.在applicationContext中加入相关配置信息,如下所示:

?

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"//类所在地址或者#+对应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,会发生冲突,则重写过滤器

5.1 写一个类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发出的请求

if (request.getRequestURI().contains("/CXFServlet")) {

// 如果是来自向CXFService发出的请求

chain.doFilter(req, res);

}

else {

// 默认action请求

super.doFilter(req, res, chain);

}

}

catch (Exception e) {

log.error(e.getMessage());

e.printStackTrace();

}

}

}

5.2 在web.xml中改变过滤器的地址:

?

1

2

3

4

5

6

7

8

9
<!-- struts2的过滤器-->

<filter>

<filter-name>struts2</filter-name>

<!--

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

-->

<!-- 自定义struts2过虑器类 用于解决struts2把cxf的请求当action处理的问题-->

<filter-class>com.nbu.retailer.filter.ExtendStrutsFilter</filter-class>

</filter>

5.3 注意,CXF的url和struts2的url不能相同。之前就这个问题困扰了我好久才发现的。

以上这篇基于CXF搭建webService的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 基于CXF搭建webService的实例讲解 https://www.kuaiidc.com/77599.html

相关文章

发表评论
暂无评论