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

时间: 2024-10-28 20:08:45

CXF学习(2) helloworld的相关文章

storm记录--5-- Storm学习的HelloWorld

Storm学习的HelloWorld 1.下载Storm-start(https://github.com/nathanmarz/storm-starter/archive/master.zip) 2.进入下载目录,对zip文件解压 3.进入解压后的文件目录,修改m2-pom.xml(将twitter4j-core和twitter4j-stream替换为下面的部分) <dependency> <groupId>org.twitter4j</groupId> <ar

AspectJ基础学习之三HelloWorld(转载)

AspectJ基础学习之三HelloWorld(转载) 一.创建项目 我们将project命名为:aspectjDemo.然后我们新建2个package:com.aspectj.demo.aspect 和 com.aspectj.demo.test 前者用来方apsect.后者用来放测试类.如果你仔细的话,你会发现Aspectj的项目上面有个AJ的标志. 二.创建Aspect 首先我们创建HelloWorld.java.他包含main()方法,但是没有方法体,代码如下: [java] view

cxf 学习

最近在学习java,想搞j2ee的开发,以及手机网站的开发. IDE:Intellij IDEA 13 JDK: 1.7 server:Tomcat 8.0.15 System:windows 7 X64 总结: 1:搞清楚,IDEA中,什么是插件,哪些是插件! 2:CXF中,在开发WebService的过程中,不要单独的针对helloWord.java(implement interface IHelloworld) 进行compile(ctrl +shit +F9),保险期间,还是直接执行b

从零开始学习C#——HelloWorld(一)

从零开始学习C# 老规矩Hello World 您的第一个程序 visual studio 如何使用就不说了 //编程的开始,Hello World! program in C# using System; namespace HelloWorld { class Hello { static void Main() { System.Console.WriteLine("Hello World!");//编程人生就是从这里开始的 System.Console.ReadKey();//

OSGI学习(1) - HelloWorld

工作后第一个项目就用的OSGI.连Java都不怎么会,一下子就用OSGI,各种概念名词都不懂,而且没有时间去深入学习,只能在已经搭好的框架上写交易,写业务流程,数据库的增删改查,过了很久才慢慢理解. 这个系列的笔记主要以实例的方式介绍我们项目中用到的OSGI技术和原理,主要包括OSGI的HelloWorld,OSGI的服务封装与发布,OSGI与Spring的结合SpringDM,OSGI的类加载原理,OSGI的测试. OSGI HelloWorld (1) 打开Eclipse,新开一个Works

Emit学习(1) - HelloWorld

之前看过Dapper(使用到了Emit), CYQ.Data(另一种思路,没有使用Emit)类的框架之后, 也想自己做一个小框架玩一下, 不过此时能力太过欠缺, 做不了Cyq.Data或者PDF.Net此类的框架, 所以开始了学习之路. 先制定一个能达到的小目标吧, 从Emit开始. 一.使用场景 Emit的使用场景了,通常我们在下面几种情形时可以选择使用Emit来实现: 1.  运行中动态的创建类型.模块等,同时又需要提高效率(可以动态编译一次,然后就不用再处理了). 2 .延迟绑定对象的使用

QT学习之-HelloWorld

实现HelloWorld有2种方法. 第一种在mainwindow.ui直接添加Label且写上“HelloWorld”. 第二种是代码直接实现 #include "mainwindow.h" #include <QApplication> #include <QtWidgets/QLabel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QLabel label("He

iOS学习之HelloWorld工程

本文应读者要求,主要简介使用Xcode创建一个“HelloWorld”工程. 1.打开Xcode,点击新建工程 选择工程类型 2.填写工程信息 3.代码简介 // // main.m // helloWorld // // Created by dengwei on 16/2/4. // Copyright (c) 2016年 dengwei. All rights reserved. // //Objective-C中使用#import导入一个头文件,与#include的区别在于不会重复导入同

cocos2d-x新手学习之Helloworld(第三篇)[版本号:cocos2d-x-3.1.1]

上篇中,能够正常执行NDK中的样例.可是由cocos2d-x生成的项目,不能编译成功.上一篇戳这里: http://blog.csdn.net/xjjjjjjjjjjj/article/details/29382201 1.创建新项目 打开CMD,输入命令: cocos new Helloworld -p com.hello -l cpp -d E:\WorkSpace\cocos2d-x\l2\ 其他平台创建项目戳这里: http://cocos2d-x.org/wiki/How_to_Sta