zoukankan      html  css  js  c++  java
  • CXF学习(2) helloworld

    0.新建一个项目取名wsserver. pom.xml 文件如下

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
          <groupId>sidonia</groupId>
          <artifactId>wsserver</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      
          <properties>
            <cxf.version>3.1.4</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>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxrs</artifactId>
                <version>${cxf.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http-jetty</artifactId>
                <version>${cxf.version}</version>
            </dependency>
        </dependencies>
    </project>

    1.新建一个interface 取名 HelloWorld

    package com.test.hello;
    
    import javax.jws.WebService;
    
    @WebService
    public interface HelloWorld {
        public void sayHello();
    }

    2.新建一个实现类,取名HelloWorldImpl

    package com.test.hello;
    
    import javax.jws.WebService;
    
    @WebService(endpointInterface="com.test.hello.HelloWorld",serviceName="HelloWorldWS")
    public class HelloWorldImpl implements HelloWorld{
    
        public void sayHello() {
            System.out.println("hello world");
        }
    }

     3.新建一个包含main方法的ServerMain类

    public class ServerMain {
        public static void main(String[] args) throws Exception {
            HelloWorld helloWorldImpl = new HelloWorldImpl();
            Endpoint.publish("http://localhost:1234/ws", helloWorldImpl);
            System.out.println("webservice 暴露成功");
        }
    }

     4.这时候访问上面这个地址,就可以看见下面这个xml

    <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://hello.test.com/"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
        name="HelloWorldWS" targetNamespace="http://hello.test.com/">
        <wsdl:types>
            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:tns="http://hello.test.com/" elementFormDefault="unqualified"
                targetNamespace="http://hello.test.com/" version="1.0">
                <xs:element name="sayHello" type="tns:sayHello" />
                <xs:element name="sayHelloResponse" type="tns:sayHelloResponse" />
                <xs:complexType name="sayHello">
                    <xs:sequence />
                </xs:complexType>
                <xs:complexType name="sayHelloResponse">
                    <xs:sequence />
                </xs:complexType>
            </xs:schema>
        </wsdl:types>
        <wsdl:message name="sayHello">
            <wsdl:part element="tns:sayHello" name="parameters"></wsdl:part>
        </wsdl:message>
        <wsdl:message name="sayHelloResponse">
            <wsdl:part element="tns:sayHelloResponse" name="parameters"></wsdl:part>
        </wsdl:message>
        <wsdl:portType name="HelloWorld">
            <wsdl:operation name="sayHello">
                <wsdl:input message="tns:sayHello" name="sayHello"></wsdl:input>
                <wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"></wsdl:output>
            </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="HelloWorldWSSoapBinding" type="tns:HelloWorld">
            <soap:binding style="document"
                transport="http://schemas.xmlsoap.org/soap/http" />
            <wsdl:operation name="sayHello">
                <soap:operation soapAction="" style="document" />
                <wsdl:input name="sayHello">
                    <soap:body use="literal" />
                </wsdl:input>
                <wsdl:output name="sayHelloResponse">
                    <soap:body use="literal" />
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="HelloWorldWS">
            <wsdl:port binding="tns:HelloWorldWSSoapBinding" name="HelloWorldImplPort">
                <soap:address location="http://localhost:1234/ws" />
            </wsdl:port>
        </wsdl:service>
    </wsdl:definitions>

    5.现在写客户端 取名wsclient

    6.cmd 到D盘找个合适的地方 命令行执行 wsdl2java http://localhost:1234/ws?wsdl,这时候这里就会根据这个wsdl生成相应的类,把它考到客户端项目下面

    7.新建一个ClientMain类

    package com.test.hello;
    
    public class ClientMain {
        public static void main(String[] args) {
            HelloWorldWS factory = new HelloWorldWS(); //显然HelloWorldWS是一个工厂类
            HelloWorld helloWorld = factory.getHelloWorldImplPort();
            helloWorld.sayHello();
        }
    }

    一运行,服务器端控制台就会打印出hello world

  • 相关阅读:
    浅读《构建之法》随笔
    个人学期总结
    201571030305/201571030306《小学生四则运算需求分析结对报告》
    小学生四则运算结对项目
    小学生四则运算
    读《构建之法》提出的问题
    个人学期总结
    实验四 小学生四则运算需求分析结对报告
    四则运算结对项目
    四则运算 201571030317
  • 原文地址:https://www.cnblogs.com/heben/p/5391311.html
Copyright © 2011-2022 走看看