红黑web service入门学习笔记.docx
- 文档编号:24722246
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:28
- 大小:28.11KB
红黑web service入门学习笔记.docx
《红黑web service入门学习笔记.docx》由会员分享,可在线阅读,更多相关《红黑web service入门学习笔记.docx(28页珍藏版)》请在冰豆网上搜索。
红黑webservice入门学习笔记
/*title:
webservice入门学习笔记
**date:
2007/01/16
**author:
laomai
**url:
*/
webservice入门学习笔记
最近要做一个java项目,里面用到了webservice技术,
经过一个多月的磕磕绊绊的摸索,总算如了点门。
现将我的学习笔记贴出来,供大家参考。
说明,本笔记第七部分主要参考了
的内容,由于这位兄弟翻译的不是很通顺,我就按照自己的理解来改编成了
hellowrold的例子:
-)。
其他部分为我原创,转载时请注明出处。
一、实验环境
win2k+jdk1.6+javee5.0+Myeclipse5.1
jdk和javee5.0均可从
下载,安装文件名为
jdk-6-windows-i586.exe
java_ee_sdk-5_02-windows.exe
没有myeclipse的也可以用eclipse代替,只要ide能执行
ant脚本就可以.
/*title:
webservice入门学习笔记
(二)
**date:
2007/01/16
**author:
laomai
**url:
*/
二、第一个最简单的例子
jsee5安装以后会在系统中建立一个ApplicationServerpe9,这是sun自带的网络服务器,
和tomcat、weblogic的性质类似。
在D:
\Sun\SDK\samples\javaee5\webservices\hello-jaxws下有一个自带的webservice入门例子,
(D:
\Sun\SDK\为我机器上javaee5的安装路径)
我们就先实验它,来理解webservice的本质
1、把jdk的安装路径如D:
\Java\jdk1.6.0\bin加到系统的path环境变量中
2、运行sun自带的网络服务器,具体方法为
开始->程序->SunMicrosystems->ApplicationServerPE9->StartDefaultServer
然后当弹出的cmd窗口中出现提示“按任意键继续时”输入回车,窗口会关闭,此时在浏览器输入
http:
//localhost:
8080,应该出现如下内容:
SunJavaSystemApplicationServerPlatformEdition9.0
Yourserverisupandrunning!
说明服务器已经启动了
3、在Myeclipse打开刚才的例子目录D:
\Sun\SDK\samples\javaee5\webservices\hello-jaxws
下的build.xml文件,这个一个ant脚本,具体含义我们以后再讲,现在先执行它
3、在build.xml文件中单击右键,在弹出菜单中选择"runas"->"1antbuild",此时build.xml里的
内容会被执行,在Myeclipse的console中会输出:
buildfile:
D:
\Sun\SDK\samples\javaee5\webservices\hello-jaxws\build.xml
init:
compile-deploy-service:
[echo]d:
/Sun/SDK
get-artifacts-windows:
get-artifacts-unix:
get-artifacts:
compile-client:
[javac]Compiling1sourcefiletoD:
\Sun\SDK\samples\javaee5\webservices\hello-jaxws\build
run-client-windows:
[exec]Helloresult=HelloAdministrator!
run-client-unix:
run-client:
all:
BUILDSUCCESSFUL
Totaltime:
43seconds
其中
[exec]Helloresult=HelloAdministrator!
的输出结果说明客户端调用服务器的webservice已经成功。
第一个例子就完成了。
我们下面会对这个例子进行详细讲解.
/*title:
webservice入门学习笔记(三)、(四)
**date:
2007/01/16
**author:
laomai
**url:
*/
三、WebService的本质
从搞c的程序员的眼光来看,webservice实际上就是用java实现的rpc(远端过程调用),
或者说是dll的变形。
服务器把它的接口对外发布成一个wsdl文件,客户端根据这个wsdl的内容生成
本地的代理类,再通过代理类调用远端的接口,代理再把接口的执行执行结果回传给客户端,
进行下一步处理。
四、例子源代码剖析
D:
\Sun\SDK\samples\javaee5\webservices\hello-jaxws(以后简称为hello-jaxws)
项目里的源文件只有三个
hello-jaxws\src\endpoint\Hello.java 提供webservice的服务器端实现类
hello-jaxws\src\client\Client.java 调用webservice的客户端测试类
hello-jaxws\build.xml 自动编译的ant脚本
下面我们把这三个文件的内容看一下
1、服务器端的service实现类文件Hello.java,
[Copytoclipboard]CODE:
/*src\endpoint\Hello.java文件的内容*/
packageendpoint;
importjavax.jws.WebService;
@WebService
publicclassHello
{
publicStringgetHello(Stringname)
{
return"Hello"+name+"!
";
}
}
有这个文件可以看出,编写一个service的实现类,把编写普通的java类
差不多,只不过又多了三点
①要在该类前一个@WebService说明,
②引入javax.jws.WebService;
③在公开的方法前加@WebMethod说明,如果不加的话,
所有的public方法都会自动变成service的对外接口.
2、客户端测试类的实现文件
[Copytoclipboard]CODE:
/*src\client\Client.java文件的内容*/
packageclient;
importjavax.xml.ws.WebServiceRef;
importendpoint.HelloService;
importendpoint.Hello;
publicclassClient
{
@WebServiceRef(wsdlLocation="http:
//localhost:
8080/Hello/HelloService?
WSDL")
staticHelloServiceservice;
publicstaticvoidmain(String[]args)
{
Clientclient=newClient();
client.doHello();
}
publicvoiddoHello()
{
try
{
Helloport=service.getHelloPort();
Stringret=port.getHello(System.getProperty("user.name"));
System.out.println("Helloresult="+ret);
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
客户端调用代码要点为:
①导入WebServiceRef包
importjavax.xml.ws.WebServiceRef;
②导入本地生成的stub类,另外编译时也要指明stub类的路径
importendpoint.HelloService;
importendpoint.Hello;
③指明服务器的wsdl路径
@WebServiceRef(wsdlLocation="http:
//localhost:
8080/myhello/HelloService?
WSDL")
④声明一个静态的service对象
staticHelloServiceservice;
⑤对要调用的远程方法声明一个代理对象,通过代理来调用真正的远程方法
Helloport=service.getHelloPort();
Stringret=port.getHello(System.getProperty("user.name"));
3、ant脚本build.xml
[Copytoclipboard]CODE:
--ant脚本build.xml的内容-->
xmlversion="1.0"encoding="UTF-8"?
>
--includeuserspecificbuildproperties-->
--导入预先j2ee预先写好的设置文件-->
--设置发布目录和类的输出目录-->
--设置java的类库路径-->
--项目的最终任务-->
--antcalltarget="restore"/-->
--测试操作系统环境-->
--编译服务器端并把它自动发布到sun的服务器上-->
srcdir="./src" includes="endpoint/**" destdir="${autodeploydir}" classpath="${javaee.home}/lib/j2ee.jar" /> --生成客户端所需的stub--> //${javaee.server.name}: ${javaee.server.port}/Hello/HelloService? WSDL"/> //${javaee.server.name}: ${javaee.server.port}/Hello/HelloService? WSDL"/> --编译客户端-->
--执行客户端-->
--以下几个任务用与清理和卸载-->
--删除生成的类文件-->
--删除和卸载服务器的webservice-->
这个脚本有许多在windows平台用不到的步骤,下面我们对其进行改造,把它精简一下.
/*title:
webservice入门学习笔记(五)
**date:
2007/01/18
**author:
laomai
**url:
*/
五、精简后的ant脚本
1、卸载webservice
执行原build.xml里的clean和undeploy任务,把安装好的webservice删除掉,具体办法为:
(1)在myeclipse里打开build.xml文件
(2)在build.xml文件里单击右键菜单中的""runas"->"2antbuild..."",
(3)在弹出的对话框中只选择clean和undelpoy任务。
然后单击"run"按钮。
此时再访问http:
//localhost:
8080/Hello/HelloService?
WSDL,出现http404错误,说明卸载成功
2、简化后的脚本内容,在hello-jaxws目录下新建一个buildtest.xml文件,内容为
xmlversion="1.0"encoding="UTF-8"?
>
--javaee安装目录的设置,代替了原来脚本中的导入语句-->
/Sun/SDK"/> --设置发布目录和类的输出目录--> --设置java类库路径--> --antcalltarget="restore"/--> --运行测试类,为项目的最后一个步骤--> --编译测试webservice的客户类,为项目的第三个步骤,本步骤的输出文件为 ${classesdir}/client/Client.class --> --本步骤的目的是生成客户端的stub文件,是项目的第二个步骤,本步骤的输出文件为 在${classesdir}下面自动生成了如下的文件 GetHello.java GetHelloResponse.java Hello.java HelloService.java ObjectFactory.java package-info.java package-info.class GetHello.class
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红黑web service入门学习笔记 web service 入门 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)