jdk发布webservice服务

时间:2024-04-04 07:31:23

1.使用JAX-WS开发webservice


    JAX-WS  的全称为 Java API for XML-Based Webservices ,从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本,本教程我们使用jdk1.7.0_07开发。

那么如何才可以发布一个WebService呢?


1:用Jdk1.6.0_13以后的版本发布一个WebService服务,并通过地址栏查看它的wsdl文档.
2:通过wsimport生成客户端代码,调用并查看运行的结果.(学会如何调用是我们的重点).
3:从互联网上获取一个WebService网络公开的服务,并使用工具生成客户端,调用并查看结果。

 

测试代码包括服务端和客户端的开发
1.3.1 服务端开发:
代码:

1.webservice服务接口

package webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface HelloServiceInf {
	
	@WebMethod
	public String getCityInfo(String city);

}

2.webservice服务实现类

package webservice;

import javax.jws.WebService;

@WebService
public class HelloServiceImp implements HelloServiceInf {

	@Override
	public String getCityInfo(String city) {
		// TODO Auto-generated method stub
		return "城市名称为:"+city;
	}

}

3.发布webservice

package webservice;

import javax.xml.ws.Endpoint;

public class WebServicePublish {

	   public static void main(String[] args) {
		 String url= "http://192.168.17.104:8020/web";
		 Endpoint.publish(url, new HelloServiceImp());
		 System.out.println("webservice 发布成功");
	}
}

打开浏览器,输入刚才发布的地址:

jdk发布webservice服务

 

说明webservice发布成功,接下来将客户端怎么调用

wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么语言编写的并不重要.
wsimport.exe位于JAVA_HOME\bin目录下.
例如:在cmd的窗口下执行wsimport可以看到

jdk发布webservice服务

常用参数为:

-keep:是否生成Java源文件

-d:指定.class文件的输出目录

-s:指定.java文件的输出目录

-p:定义生成类的包名,不定义的话有默认包名

-verbose:在控制台显示输出信息

-b:指定jaxws/jaxb绑定文件或额外的schemas

-extension:使用扩展来支持SOAP1.2
示例:
wsimport其他参数说明,我们经常使用的参数为-d,-s,-p
-d<目录>将会生成.class文件.
示例:wsimport –d . http://192.168.17.104:8020/web?wsdl
-s<目录>将会生成.java文件.
示例:wsimport –s . http://192.168.17.104:8020/web?wsdl
-p<包名>将生成的文件(.java或是.class修改成指定的包名)
示例:wsimport -s . -p cn http://192.168.17.104:8020/web?wsdl

这里我们在c盘生成

jdk发布webservice服务

之后将生成的java代码拷贝到客户端,注意生成的java包名是否有冲突

客户端代码引用如下:

package com.bojoy;

import webservice.HelloServiceImp;
import webservice.HelloServiceImpService;

public class CityClient {
	public static void main(String[] args) {
	 HelloServiceImpService helloServiceImpService = new HelloServiceImpService();
	 HelloServiceImp helloServiceImpPort = helloServiceImpService.getHelloServiceImpPort();
	 String cityInfo = helloServiceImpPort.getCityInfo("上海");
	 System.out.println("客户端调用webservice信息为:"+cityInfo);
	}

}

结果如下:

jdk发布webservice服务