总结一下sun 公司自己的 JAX-WS WebService 用法

JAX-WS WebService 是sun 公司自己推出的产品,给自己做个记录,好记性不如烂笔头,方便日后查询,废话不说直接干货。


第一种传统方式:

创建一个类如下:

package com.webservice.test;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;

/** 
 *  @WebService - 它是一个注解,用在类上指定将此类发布成一个ws. 
    Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。 
  
 * @author lt 
 * 
 */ 
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class HelloWebService {
	
	@WebMethod
	public  String HellowWord(String name) {
		return "hellow:"+name;
	}
	
	@WebMethod
	public  String HellowWord2(String name) {
		return "hellow:"+name;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/** 
		 *参数1:服务的发布地址 
		 *参数2:服务的实现者 
		 */  
		System.out.println("发布服务...");
		Endpoint.publish("http://localhost:9080/JAXWebService/helloWord",new HelloWebService());  
	}

}





 
  
 
  

用 wsimport -keep  http://localhost:9080/JAXWebService/helloWord?wsdl 生成客户端(需要JDK 1.6以上)

然后再客户端直接调用即可,客户端调用代码片段:

		HelloWebService2Service hellow2S=new HelloWebService2Service();
		HelloWebService2 hellow=hellow2S.getHelloWebService2Port();
		System.out.println("11");
		System.out.println(hellow.hellowWord2("涛哥"));


第二种方式:不需要生成客户端(此方式为servlet方式),个人感觉生成客户端过于繁琐 。

在工程目录 web-inf 下面创建 sun-jaxws.xml 文件内容如下:


 
     
 

同时在web.xml文件 中添加如下配置:


  
  
    
         
             com.sun.xml.ws.transport.http.servlet.WSServletContextListener  
         
  
  
     SayHiService  
     
         com.sun.xml.ws.transport.http.servlet.WSServlet  
     
    
    
        SayHiService  
        /service/helloWordStyle2  
   


根据浏览器查看 http://localhost:9080/JAXWebService/service/helloWordStyle2?wsdl 文件


This XML file does not appear to have any style information associated with it. The document tree is shown below.




































然后客户端调用代码:

package com.jaxws.ws.test;


import java.net.URL;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/*
 * 直接通过网址调用
 */
public class CallWebServiceTool {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		try {
//			String endpoint = "http://localhost:9080/JAXWebService/service/helloWordStyle2?wsdl";
//			//直接引用远程的wsdl文件
//			Service service = new Service();
//			Call call = (Call) service.createCall();
//			call.setTargetEndpointAddress(endpoint);
//			call.setOperationName(new QName("http://style2.webservice.com/", "HellowWord2"));//WSDL里面描述的接口名称
//			call.addParameter("arg0", org.apache.axis.encoding.XMLType.XSD_DATE,
//			javax.xml.rpc.ParameterMode.IN);//接口的参数
//			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型 
//			String temp = "涛哥1";
//			String result = (String)call.invoke(new Object[]{temp});
//			//给方法传递参数,并且调用方法
//			System.out.println("result is "+result);
//			}
//			catch (Exception e) {
//			System.err.println(e.toString());
//		}
		String endpoint = "http://localhost:9080/JAXWebService/service/helloWordStyle2?wsdl";
		String namespace="http://style2.webservice.com/";
		String method="HellowWord2";
		String paramater="arg0";
		String message="涛哥v5";
		
		callWebservice(endpoint, namespace, method, paramater, message);
	}
	
	public static void callWebservice(String endpoint,String namespace,String method,String paramater,String message) {
		try {
//			String endpoint = "http://localhost:9080/JAXWebService/service/helloWordStyle2?wsdl";
			//直接引用远程的wsdl文件
			Service service = new Service();
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(new URL(endpoint));
			call.setOperationName(new QName(namespace, method));//WSDL里面描述的接口名称
			call.addParameter(paramater, org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);//接口的参数
			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型 
			String temp = message;
			String result = (String)call.invoke(new Object[]{temp});
			//给方法传递参数,并且调用方法
			System.out.println("result is "+result);
			}
			catch (Exception e) {
			System.err.println(e.toString());
		}
	}

}

调用结果:result is 你好:涛哥v5


可能需要用到的jar包 服务端

总结一下sun 公司自己的 JAX-WS WebService 用法_第1张图片


客户端调用:

总结一下sun 公司自己的 JAX-WS WebService 用法_第2张图片







你可能感兴趣的:(java)