zoukankan      html  css  js  c++  java
  • cxf+spring发布webservice和调用

    maven项目配置http://cxf.apache.org/docs/using-cxf-with-maven.html

    <properties>
      <cxf.version>2.2.3</cxf.version>
    </properties>
     
    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
            <!-- Jetty is needed if you're are not using the CXFServlet -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>${cxf.version}</version>
        </dependency>
    </dependencies>

    项目所需jar包:http://files.cnblogs.com/files/walk-the-Line/cxf-spirng.zip 

    首先写一个demo接口

    package cn.cxf.demo;
     
    import javax.jws.WebService;
     
    @WebService
    public interface Demo {
        String sayHi(String text);
    }

    然后就需要它的实现类

    targetNamespace 是指向接口的包路径

    package cn.cxf.demo.impl;
     
    import javax.jws.WebService;
     
    import cn.cxf.demo.Demo;
    @WebService(endpointInterface="cn.cxf.demo.Demo", serviceName="DemoService", targetNamespace="http://demo.cxf.cn/")
    public class DemoImpl implements Demo {
     
        @Override
        public String sayHi(String text) {
            return "Hi ! " + text;
        }
     
    }

    在src目录下添加applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
      
        <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="demoService"
            implementor="cn.cxf.demo.impl.DemoImpl" 
            address="/DemoService" />
         
    </beans>

    再修改下web.xml文件就搞定了~(在web.xml添加如下内容就可以了)

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <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>/ws/*</url-pattern>
      </servlet-mapping>

    发布一下,访问 http://localhost:8080/cxfdemo/ws 就可以看到接口已经发布成功了。

    调用接口就更简单了

    如果只是单纯的调用接口的话只需要4个jar包就可以了:

    cxf-2.4.3.jar

    neethi-3.0.1.jar

    wsdl4j-1.6.2.jar

    xmlschema-core-2.0.1.jar

    可以从上面的jar包里挑选。

    调用代码如下:

    package cn.cxf.test;
     
    import org.apache.cxf.endpoint.Client;
    import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
     
    public class CXFWSTest {
        public static void main(String[] args) throws Exception {
            JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
            Client client = factory.createClient("http://localhost:8080/cxfdemo/ws/DemoService?wsdl");
            Object[] objs = client.invoke("sayHi", "阿福");
            System.out.println(objs[0].toString());
        }
    }
  • 相关阅读:
    css3软键盘不盖住输入框的方法
    php strpos注意的地方
    swoole不断的切换前端链接方法 防止攻击
    mysql cpu使用率过高解决方法
    caffe(9) caffe例子
    affe(8) solver 优化方法
    caffe(7) solver及其配置
    caffe(6) Blob,Layer,Net 以及对应配置文件的编写
    caffe(5) 其他常用层及参数
    caffe(4) 激活层(Activation Layers)及参数
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5432737.html
Copyright © 2011-2022 走看看