jdk6原生态webservice

1、定义服务接口

import java.util.List;

import javax.jws.WebService;

@WebService
public interface ServiceDemo {
    public String sayHello(String name);

    public List<String> getUser();
}

2、定义接口属性类

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

import service.ServiceDemo;

@WebService(targetNamespace = "http://server.demo/", endpointInterface = "service.ServiceDemo", serviceName = "ServiceDemo", portName = "ServiceDemopott")
public class ServiceDemoImpl implements ServiceDemo {

    private List<String> list = new ArrayList<String>();

    public ServiceDemoImpl() {
	list.add("张三");
	list.add("李四");
	list.add("王五");
    }

    @Override
    public String sayHello(String name) {
	return name == null || "".equals(name) ? "" : name + ":你好!";
    }

    @Override
    public List<String> getUser() {
	return list;
    }

}


3、发布服务:

package junit.test;

import javax.xml.ws.Endpoint;

import service.ServiceDemo;
import service.impl.ServiceDemoImpl;

public class Test {
    public static void main(String[] args) {
	String address = "http://localhost:9899/ServiceDemo/";
	ServiceDemo serviceDemo = new ServiceDemoImpl();
	Endpoint.publish(address, serviceDemo);
    }
}

4、测试发布的服务,在浏览器输入地址:http://localhost:9899/ServiceDemo/?wsdl 出现下列页面,表示发布成功:

<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><definitions targetNamespace="http://server.demo/" name="ServiceDemo"><import namespace="http://service/" location="http://localhost:9899/ServiceDemo/?wsdl=1"/><binding name="ServiceDemopottBinding" type="ns1:ServiceDemo"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><operation name="sayHello"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation><operation name="getUser"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="ServiceDemo"><port name="ServiceDemopott" binding="tns:ServiceDemopottBinding"><soap:address location="http://localhost:9899/ServiceDemo/"/></port></service></definitions>

上面红色标记为客户调用时的关键信息,分别为命名查找和生成的服务节点。

5.、客户端调用可以通过俩种方式。

第一种是动态生成客户端代理对象的调用:

package junit.test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import org.junit.BeforeClass;
import org.junit.Test;

import com.demo.client.ServiceDemo;
import com.demo.client.ServiceDemo_Service;

public class TestClientDemo {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @Test
    public void qname() {
	final QName SERVICE_NAME = new QName("http://server.demo/",
		"ServiceDemo");
	Service service = null;
	try {
	    service = Service.create(new URL(
		    "http://localhost:9899/ServiceDemo/?wsdl"), SERVICE_NAME);
	    ServiceDemo serviceDemo = service.getPort(ServiceDemo.class);
	    System.out.println(serviceDemo.sayHello("xiaozhang"));
	    List<String> l = serviceDemo.getUser();
	    for (String s : l)
		System.out.println(s);
	} catch (MalformedURLException e) {
	    e.printStackTrace();
	}
    }
}

第二种是用jdk自带的wsimport生成客户端代码,在dos窗口中键入:wsimport -keep -p com.demo.client  http://localhost:9899/ServiceDemo/?wsdl

将dos当前路径下生成的包com/demo/client 拷贝中项目中。


 

package junit.test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import org.junit.BeforeClass;
import org.junit.Test;

import com.demo.client.ServiceDemo;
import com.demo.client.ServiceDemo_Service;

public class TestClientDemo {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @Test
    public void sayHello() {
	ServiceDemo_Service serviceDemoService = new ServiceDemo_Service();
	ServiceDemo serviceDemo = (ServiceDemo) serviceDemoService
		.getServiceDemopott();
	System.out.println(serviceDemo.sayHello("张三"));
    }

    @Test
    public void getUser() {
	ServiceDemo_Service serviceDemoService = new ServiceDemo_Service();
	ServiceDemo serviceDemo = (ServiceDemo) serviceDemoService
		.getServiceDemopott();
	List<String> l = serviceDemo.getUser();
	for (String s : l)
	    System.out.println(s);
    }
 }


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值