zoukankan      html  css  js  c++  java
  • 搭建web项目结合spring+cxf的webservice服务

    服务端:

    服务端和客户端都需要引入包

     1 antlr-2.7.7.jar
     2 aopalliance-1.0.jar
     3 asm-3.3.jar
     4 commons-collections-3.2.1.jar
     5 commons-lang-2.6.jar
     6 commons-logging-1.1.1.jar
     7 cxf-2.4.2.jar
     8 cxf-manifest.jar
     9 cxf-xjc-boolean-2.4.0.jar
    10 cxf-xjc-bug671-2.4.0.jar
    11 cxf-xjc-dv-2.4.0.jar
    12 cxf-xjc-ts-2.4.0.jar
    13 FastInfoset-1.2.9.jar
    14 geronimo-activation_1.1_spec-1.1.jar
    15 geronimo-annotation_1.0_spec-1.1.1.jar
    16 geronimo-javamail_1.4_spec-1.7.1.jar
    17 geronimo-jaxws_2.2_spec-1.0.jar
    18 geronimo-jms_1.1_spec-1.1.1.jar
    19 geronimo-servlet_3.0_spec-1.0.jar
    20 geronimo-stax-api_1.0_spec-1.0.1.jar
    21 geronimo-ws-metadata_2.0_spec-1.1.3.jar
    22 isorelax-20030108.jar
    23 jaxb-api-2.2.1.jar
    24 jaxb-impl-2.2.1.1.jar
    25 jaxb-xjc-2.2.1.1.jar
    26 jettison-1.3.jar
    27 jetty-continuation-7.4.5.v20110725.jar
    28 jetty-http-7.4.5.v20110725.jar
    29 jetty-io-7.4.5.v20110725.jar
    30 jetty-security-7.4.5.v20110725.jar
    31 jetty-server-7.4.5.v20110725.jar
    32 jetty-util-7.4.5.v20110725.jar
    33 joda-time-1.6.2.jar
    34 jra-1.0-alpha-4.jar
    35 js-1.7R2.jar
    36 jsr311-api-1.1.1.jar
    37 msv-core-2010.2.jar
    38 neethi-3.0.1.jar
    39 opensaml-2.4.1.jar
    40 openws-1.4.1.jar
    41 relaxngDatatype-20020414.jar
    42 saaj-api-1.3.jar
    43 saaj-impl-1.3.2.jar
    44 serializer-2.7.1.jar
    45 slf4j-api-1.6.1.jar
    46 slf4j-jdk14-1.6.1.jar
    47 spring-aop-3.0.5.RELEASE.jar
    48 spring-asm-3.0.5.RELEASE.jar
    49 spring-beans-3.0.5.RELEASE.jar
    50 spring-context-3.0.5.RELEASE.jar
    51 spring-core-3.0.5.RELEASE.jar
    52 spring-expression-3.0.5.RELEASE.jar
    53 spring-jms-3.0.5.RELEASE.jar
    54 spring-tx-3.0.5.RELEASE.jar
    55 spring-web-3.0.5.RELEASE.jar
    56 stax2-api-3.1.1.jar
    57 velocity-1.7.jar
    58 woodstox-core-asl-4.1.1.jar
    59 wsdl4j-1.6.2.jar
    60 wss4j-1.6.2.jar
    61 xalan-2.7.1.jar
    62 xml-resolver-1.2.jar
    63 xmlbeans-2.4.0.jar
    64 xmlschema-core-2.0.jar
    65 xmlsec-1.4.5.jar
    66 xmltooling-1.3.1.jar
    67 xsdlib-2010.1.jar
    View Code

    web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7 <!-- 两种方式配置1.监听器配置 2.servlet配置, 以下的是采用监听器配置的 -->
     8 
     9     <!-- 通过上下文参数指定spring配置文件的位置 -->
    10     <context-param>
    11         <param-name>contextConfigLocation</param-name>
    12         <param-value>classpath:cxf-servlet.xml</param-value>
    13     </context-param>
    14     <listener>
    15         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    16     </listener>
    17     
    18     <!-- 配置CXF框架的核心Servlet  -->
    19     <servlet>
    20         <servlet-name>cxf</servlet-name>
    21         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    22         <!-- 通过初始化参数指定配置文件的位置 -->
    23         <!-- 
    24         <init-param>
    25             <param-name>config-location</param-name>
    26             <param-value>classpath:cxf-servlet.xml</param-value>
    27         </init-param>
    28          -->
    29     </servlet>
    30 
    31     <servlet-mapping>
    32         <servlet-name>cxf</servlet-name>
    33         <url-pattern>/cxf/*</url-pattern>
    34     </servlet-mapping>
    35     
    36   <welcome-file-list>
    37     <welcome-file>index.jsp</welcome-file>
    38   </welcome-file-list>
    39 </web-app>

    cxf-servlet.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
     4     xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     6                         http://www.springframework.org/schema/beans/spring-beans.xsd
     7                         http://cxf.apache.org/bindings/soap 
     8                         http://cxf.apache.org/schemas/configuration/soap.xsd
     9                         http://cxf.apache.org/jaxws 
    10                         http://cxf.apache.org/schemas/jaxws.xsd
    11                         http://cxf.apache.org/jaxrs 
    12                         http://cxf.apache.org/schemas/jaxrs.xsd
    13                         ">
    14     <!-- 引入CXF Bean定义如下,早期的版本中使用,如果是servlet引入的话则下面三句不用了,因为框架引入了 -->
    15     <import resource="classpath:META-INF/cxf/cxf.xml" />
    16     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    17     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    18 
    19     <!-- 通过spring配置文件发布CXF的服务 -->
    20 
    21     <!-- 第一种发布方式:没有接口的发布(简单发布) -->
    22     <!-- 
    23         id:唯一标识
    24         address:访问url
    25         implementor:提供服务的类型 
    26      -->
    27     <jaxws:endpoint id="helloService" address="/hello"
    28         implementor="cn.itcast.cxf.HelloService">
    29         <!-- 加入消息拦截器 -->
    30         <jaxws:inInterceptors>
    31             <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
    32         </jaxws:inInterceptors>
    33         <jaxws:outInterceptors>
    34             <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
    35         </jaxws:outInterceptors>
    36     </jaxws:endpoint>
    37 
    38     <!-- 第二种发布方式:带有接口的发布 -->
    39     <!-- 
    40         id:唯一标识
    41         address:访问url
    42         serviceClass:接口类型
    43      -->
    44     <jaxws:server id="hiService" address="/hi"
    45         serviceClass="cn.itcast.cxf.IHiService">
    46         <jaxws:serviceBean>
    47             <!-- 提供服务的实现类 -->
    48             <bean class="cn.itcast.cxf.HiServiceImpl"></bean>
    49         </jaxws:serviceBean>
    50 
    51         <!-- 加入消息拦截器  -->
    52         <jaxws:inInterceptors>
    53             <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
    54         </jaxws:inInterceptors>
    55         <jaxws:outInterceptors>
    56             <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
    57         </jaxws:outInterceptors>
    58     </jaxws:server>
    59 
    60     <!-- 配置restful方式的web服务 -->
    61     <bean id="ps" class="cn.itcast.restful.PersonServiceImpl"></bean>
    62     <jaxrs:server id="personService" address="/p">
    63         <jaxrs:serviceBeans>
    64             <ref bean="ps"/>
    65         </jaxrs:serviceBeans>
    66         <jaxrs:inInterceptors>
    67             <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
    68         </jaxrs:inInterceptors>
    69         <jaxrs:outInterceptors>
    70             <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
    71         </jaxrs:outInterceptors>
    72     </jaxrs:server>
    73 </beans>

    忽略60-72 那是 jason方面的配置

    IHiService.java

    1 package cn.itcast.cxf;
    2 
    3 import javax.jws.WebService;
    4 
    5 @WebService
    6 public interface IHiService {
    7     public String sayHi(String name);
    8 }
    View Code

    HiServiceImpl.java

     1 package cn.itcast.cxf;
     2 
     3 public class HiServiceImpl implements IHiService {
     4 
     5     @Override
     6     public String sayHi(String name) {
     7         System.out.println("sayHi....");
     8         return "hi " + name;
     9     }
    10 
    11 }
    View Code

    然后

    localhost:8080/项目地址/hi?xsdl

    客户端

    利用 wsimport -s 地址 或者ws2java -s地址的命令

    得到文件后

    把接口文件复制来

    配置文件 ClientBean.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
     4     xmlns:soap="http://cxf.apache.org/bindings/soap"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     6                         http://www.springframework.org/schema/beans/spring-beans.xsd
     7                         http://cxf.apache.org/bindings/soap 
     8                         http://cxf.apache.org/schemas/configuration/soap.xsd
     9                         http://cxf.apache.org/jaxws 
    10                         http://cxf.apache.org/schemas/jaxws.xsd">
    11         <!-- 配置客户端bean -->
    12         <!-- 
    13             id:唯一标识
    14             address:请求的服务地址
    15             serviceClass:客户端接口
    16          -->
    17         <jaxws:client id="hiService" address="http://localhost/CXF_03/cxf/hi" serviceClass="cn.itcast.cxf.IHiService"></jaxws:client>
    18         
    19 </beans>

    测试 IHiService就是拷贝过来的接口文件,放到项目中

     1 package cn.itcast.test;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 import cn.itcast.cxf.IHiService;
     7 
     8 public class Test1 {
     9     public static void main(String[] args) {
    10         //初始化spring
    11         ApplicationContext ctx = new ClassPathXmlApplicationContext("ClientBeans.xml");
    12         IHiService s = (IHiService) ctx.getBean("hiService");
    13         s.sayHi("abc");
    14         System.out.println(s.getClass().getName());
    15     }
    16 }
  • 相关阅读:
    mysql第三天作业
    mysql第二天作业
    mysql第一天作业
    S5第一次月考
    网络编程(待补充)
    字符编码(待补充)
    继承和封装
    面向对象
    codeforces 394E Lightbulb for Minister 简单几何
    跟面试官讲Binder(零)
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3806298.html
Copyright © 2011-2022 走看看