最近在学习网格,还是感觉很抽象,所以想自己做个例子来加深理解.花了两天时间终于搞好了.
首先,这里有详细的步骤,不过手册里面也有点点小错误http://gdp.globus.org/gt4-tutorial/multiplehtml/ch03s01.html.环境配置:ws-core-4.0.4,apache-ant-1.6.5,jdk1.5.0_09.globus-build-service-gt4_0.2.5.还有就是要运行globus-build-service.py需要python环境支持.所以得安装python.要编写、部署这样一个Web Service需要一下5个简单的步骤:
1.通过编写WSDL文件,定义服务的接口.
2.通过编写Java代码,实现上述接口定义的服务
3.编写WSDD部署描述符和JNDI.
4.使用ant编译并形成GAR(Globus ARchive)文件
5.通过GT4自带的工具部署服务
JDK,ANT,TOMCAT的安装不用多说,可选:安装补丁,直接把tomcat-native-1.1.2.tar.gz拷贝到bin\下,备份原来的tomcat-native.tar.gz,
然后把tomcat-native-1.1.2.tar.gz改名tomcat-native.tar.gz(不过我没装)
注意:axis-bin-1_4.zip
解压,把解压出来的axix目录复制到tomcat目录下的webapps目录下;
将axis/WEB-INF/lib目录下的文件复制到tomcat目录下的common/lib目录下;
重新启动tomcat;
测试:在浏览器输入http://localhost:8080/axis/happyaxis.jsp;如果能访问表示设置成功。
下面,我们分别介绍以上五个步骤:
step1定义服务接口
通过编写WSDL文件,来定义我们提供服务的接口。这样,客户端通过解析WSDL文件,从而了解服务的具体定义和调用情况。
文件的代码:(Math.wsdl)可以从手册里拷贝.
该文件被保存在EXAMPLES_DIR\schema\examples\MathService_instance目录下
其中EXAMPLES_DIR=C:\gt4.
2 建C:\gt4\namespace2package.mappings
手册上是说的namespace2package..properties文件,但每次在编译的时侯,都是映射后的命名空间找不着,改成.mappings就OK了.这里注意每条记录只能占一行,而且"http\://"那一"\"不能乱删.
step2 写服务实现类
1 MathQNames.java
内容从手册上拷,文件建在C:\gt4\org\globus\examples\services\core\first\impl\MathQNames.java处.
2 MathService.java
内容从手册上拷,文件建在C:\gt4\org\globus\examples\services\core\first\impl\MathService.java处.
3建WSDD和JNDI部署文件
1 C:/gt4/org/globus/examples/services/core/first/deploy-server.wsdd;
2 C:/gt4/org/globus/examples/services/core/first/deploy-jndi-config.xml;
step4 生成gar文件
1 将下载的globus-build-service-gt4_0.2.5里面几个文件先拷贝到C:\gt4下
2 在C:\gt4下运行命令:
globus-build-service.py -d org/globus/examples/services/core/first/ -s schema/examples/MathService_instance/Math.wsdl 从而生成build文件夹.
如果不成功,估计要先运行C:\gt4\etc\globus-devel-env.bat;(主要配置classpath,将c:\gt4\lib\*.jar,引入到classpath,),遇到
成功的话,生成d:\gt4\org_globus_examples_services_core_first.gar.
step 5 部署
1 c:\gt4下运行:
globus-deploy-gar c:/gt4/org_globus_examples_services_core_first.gar(需要python支持)
这样,我们的服务就算发布了,可以运行给外面的人用了.但是它得在那个容器里面,可以直接用GT4带的java WS Core container发布,运行如下命令
2 运行globus-start-container -nosec
如果看到你自己的MathServices服务,就说明成功了.
这样你不能通过IE看你的服务,如果要的话,我们可以把他发布到tomcat里面去,你得装Tomcat,然后用以下明明发布到tomcat里面去,ant -f share/globus_wsrf_common/tomcat/tomcat.xml deploySecureTomcat -Dtomcat.dir="C:\Program Files\Apache Software Foundation\Tomcat 5.0"(最后那个目录为你的tomcat的目录)
(注意)重新启动tomcat,输入http://localhost:8080/wsrf/services你就可以看到你服务了!
客户端的开发,有一个问题要注意(有两处)
System.out.println("Current value:" + math.getValue(new GetValueRP()));
math.getValue修改为math.getValueRP,估计这是作者笔误.
然后是客户端编译命令:
javac -classpath ./build/stubs/classes/;"%CLASSPATH%" org/globus/examples/clients/MathService_instance/Client.java
最后运行检验:java -classpath ./build/stubs/classes/;"%CLASSPATH%" org.globus.examples.clients.MathService_instance.Client http://127.0.0.1:8080/wsrf/services/examples/core/first/MathService
出现期望的数字就说明成功了.
来自:http://blog.sina.com.cn/u/49ccf52b010008b5