JAVA 6.0 之后,其中JDK自带有个轻量级的web service 服务器。如果你比较细心一定发现在你安装java的路径下,有java webservice 的示例代码。
我以前也用java开发过web service ,但是当初用了一个apache 下axis 开源项目。如果axis夜进化了,反正我不认识了。不过java自带有何必舍近求远呢。今天我就把自己创建的最简单java webservice 范例过程记录下来,与大家分享。
我用的是netbeans 6,首先建立一个java 应用程序工程,名为WebServices。建立一个服务端程序。
package
WebServices;
import
javax.jws.
*
;
import
javax.xml.ws.Endpoint;
/**
*
@author
hecm
*/
@WebService(targetNamespace
=
"
http://www.blogjava.net/JAVA-HE
"
, serviceName
=
"
HelloService
"
)
public
class
WSProvider
{
//
@WebResult(name = "Greetings")
//
自定义该方法返回值在WSDL中相关的描述
@WebMethod(action
=
"
sayHi
"
, operationName
=
"
sayHi
"
)
public
String sayHi(@WebParam(name
=
"
MyName
"
) String name)
{
return
"
Hi,
"
+
name;
//
@WebParam是自定义参数name在WSDL中相关的描述
}
@Oneway
//
表明该服务方法是单向的,既没有返回值,也不应该声明检查异常
@WebMethod(action
=
"
printSystemTime
"
, operationName
=
"
printSystemTime
"
)
//
自定义该方法在WSDL中相关的描述
public
void
printTime()
{
System.out.println(System.currentTimeMillis());
}
public
static
void
main(String[] args)
{
Thread wsPublisher
=
new
Thread(
new
WSPublisher());
wsPublisher.start();
}
private
static
class
WSPublisher
implements
Runnable
{
public
void
run()
{
//
发布WSProvider到http:
//
localhost:8888/hechangmin/WSProvider这个地址,之前必须调用wsgen命令
//
生成服务类WSProvider的支持类,命令如下:
//
wsgen -cp . WebServices.WSProvider
Endpoint.publish("http://localhost:8888/JAVA-HE/WSProvider", new WSProvider());
}
}
}
当然建立对应的包,就不用说了。
然后编译文件。
进入命令提示符下,进入classes目录,运行:wsgen -cp . WebServices.WSProvider
可以看到将刚才的class 生成了几个java文件和class文件。
现在要做的是发布ws到http://localhost:8888/chinajash/WSProvider
而实际上的动作就是:Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
当然直接运行WSProvider 。
然后输入http://localhost:8888/JAVA-HE/WSProvider?wsdl
就已经查看到生成的wsdl (webservice 描述语言)。
也就是服务端就OK了。
保持运行。编写一个测试客户端:
首先选择项目,右键新建 web服务客户端。其中ws url填入刚才生成的wsdl地址:
http://localhost:8888/JAVA-HE/WSProvider?wsdl
(实际上:和wsimport http://localhost:8888/JAVA-HE/WSProvider?wsdl 一样的效果)
产生一个效果:在classes下 按照 之前指定的名字空间产生的包下(目录结构)生成了7个帮助class。
然后我们建立一个包 client 建立测试文件:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
client;
import
net.blogjava.java_he.
*
;
/**
*
*
@author
hecm
*/
public
class
Test {
public
static
void
main(String args[])
{
HelloService hs
=
new
HelloService();
WSProvider ws
=
hs.getWSProviderPort();
System.out.println(ws.sayHi(
"
hechangmin
"
));
ws.printSystemTime();
}
}
运行这个测试类:
Hi,hechangmin
输出了。顺利完成!
一点个人经验,你发布的地址最好写成可配置。还有就是wsdl 中会严格按照你指定的url来访问,比如你指定的127.0.0.1 那么你用本机IP的时候也许并不能顺利访问。
分享到:
相关推荐
中文版的JDK,能让你更加清楚的知道如何运用API,能更加方便你的查询。
最全 JDK6.0 API 文档,最全 JDK6.0 API 文档。
jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档
安装和配置jdk6.0和tomcat6.0
JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵
JDK6.0的安装与配置
JDK jdk6.0环境变量设置.pdf
JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵
jdk6.0中文版jdk。不错的开发者文档!希望你能喜欢!
最新的Java JDK6.0课件及源代码,初学Java的朋友不要错过
JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档
JDK 6.0 API 中文版 开发新手的必备 , 绝对完美的中文版
深入浅出JDK6.0光盘内容 从Java语言的特点、语法、开发环境入手
JDK6.0 官方 中文 api chm
JDK 6 0 zip 欢迎下载 JDK 6 0 zip 欢迎下载 JDK 6 0 zip 欢迎下载
JDK6.0 API官方中文版CHM格式手册,居家旅行,开发学习必备良品,一册在手,开发无忧啊!
JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵
java6.0文档chm版,分成三部分,分别为JDK6.0+中文文档-lytim24.part1.rar、JDK6.0+中文文档-lytim24.part2.rar、JDK6.0+中文文档-lytim24.part3.rar
不容易啊,好不容易上传个资源,还得切成三份!