WebService简单开发 apache-cxf-3.1.6环境配置

原创
2016/04/30 20:32
阅读数 4.6K
1.下载地址:
    http://www.apache.org/dyn/closer.lua/cxf/3.1.6
    
2.修改系统环境变量path
    解压apache-cxf-3.1.6.zip文件夹
    将解压后的文件夹下的bin目录的路径拷贝
    修改系统环境变量为:D:\DevTools\Cxf\apache-cxf-3.1.6\bin
    打开Cmd命令行窗口执行wsdl2java   如果出现以下提示,证明配置成功
    
    C:\Users\xp>wsdl2java
    Missing argument: wsdlurl
    Usage : wsdl2java -fe|-front
    
    
3.开发webservice的服务端,有4步骤==================服务端
    1.导入jar包
	    asm-3.3.1.jar
            commons-logging-1.1.1.jar
            cxf-2.7.8.jar
            geronimo-servlet_3.0_spec-1.0.jar
            jetty-continuation-8.1.14.v20131031.jar
            jetty-http-8.1.14.v20131031.jar
            jetty-io-8.1.14.v20131031.jar
            jetty-security-8.1.14.v20131031.jar
            jetty-server-8.1.14.v20131031.jar
            jetty-util-8.1.14.v20131031.jar
            neethi-3.0.2.jar
            stax2-api-3.1.1.jar
            woodstox-core-asl-4.2.0.jar
            wsdl4j-1.6.3.jar
            xmlschema-core-2.0.3.jar
	  CXF:内置了jetty服务器



    2.开发interface
        package com.xp.cn;
        import javax.jws.WebService;
        
        /**
         * @author xp
         * @ClassName: WebServiceDemo
         * @Description: webService服务端
         * @date 2016年4月30日 下午8:27:44
         */
        @WebService
        public interface WebServiceDemo {
        	String sayHello(String str);
        }
        
        
        
    3.开发实现类
        /**
         * @author xp
         * @ClassName: WebServiceImpl
         * @Description: TODO
         * @date 2016年4月30日 下午8:39:22
         */
        @WebService(endpointInterface = "com.xp.cn.IWebServiceDemo", 
        			serviceName = "webServiceImpl")
        public class WebServiceImpl implements IWebServiceDemo {
        	@Override
        	public String sayHello(String name) {
        		return "你好" + name + new Date();
        	}
        }
        endpointInterface:指定接口的权限定名
        serviceName : 指定一个服务的名称
        
        
        
       4.发布Publish
               /**
         * @author xp
         * @Title: WebServicePublish.java
         * @Package com.xp.cn
         * @Description: TODO
         * @date 2016年4月30日 下午9:06:49
         * @version V1.0  
         */
        package com.xp.cn;
        
        import javax.xml.ws.Endpoint;
        
        /**
         * @author xp
         * @ClassName: WebServicePublish
         * @Description: TODO
         * @date 2016年4月30日 下午9:06:49
         *
         */
        public class WebServicePublish {
        	public static void main(String[] args) {
        		IWebServiceDemo demo = new WebServiceImpl();
        		//调用EndPoint发布服务
        		Endpoint.publish("http://127.0.0.1/XXX", demo);
        	}
        }
        
        测试是否成功
        在浏览器中输入:http://127.0.0.1/XXX出现下图说明发布成功
        可以点击链接进入wsdl,接下来记得章节会具体将到wsdl

        

4.编写WebService客户端======================================客户端
    调用cxf提供的wsdl2java工具,更具wsdl生成相应的java代码
    任何语言只要实现webservice,都需要提供,并暴露wsdl
    
    操作如下图:

1.图


2.图

找到wsdl2java所生成的类,其中有一个继承了Service,该类的实实例可以当成工厂来使用
调用Service子类实例的getXXXPort方法
/**
 * @author xp
 * @Title: ClientTest.java
 * @Package com.xp.cn.test
 * @Description: TODO
 * @date 2016年4月30日 下午10:37:23
 * @version V1.0  
 */
package com.xp.cn.test;

import com.xp.cn.IWebServiceDemo;
import com.xp.cn.WebServiceImpl;

/**
 * @author xp
 * @ClassName: ClientTest
 * @Description: 客户端代码
 * @date 2016年4月30日 下午10:37:23
 *
 */
public class ClientTest {
	
	public static void main(String[] args) {
		WebServiceImpl service = new WebServiceImpl();
		IWebServiceDemo webServiceImpl = service.getWebServiceImplPort();
		String sayHello = webServiceImpl.sayHello("xp");
		System.out.println(sayHello);
	}
}

控制台输出:你好xpSat Apr 30 22:48:19 CST 2016

这个时候不能改掉服务端的java虚拟机



展开阅读全文
打赏
2
11 收藏
分享
加载中
可我看到的包是:“cxf-2.7.8.jar”
2016/12/09 14:27
回复
举报
xpttxsok博主
79
2016/04/30 21:43
回复
举报
更多评论
打赏
2 评论
11 收藏
2
分享
返回顶部
顶部