GT4

一、实验目的

掌握gt4的安装方法,熟练应用gt4进行web服务程序开发与部署等。


二、实验环境

1、 GT4在Windows7平台安装;
2、 GT4在Fedora9平台安装;
3、 在Windows平台Gt4上部署1+…50的web服务;
4、 在Linux平台Gt4上部署50+…100的web服务;
5、 实现linux与Windows之间的web服务通信;


三、实验内容

1、GT4在win7平台下的安装

1) 添加和设置环境变量
[添加]
PATH=%GLOBUS_LOCATION%\bin;%JAVA_HOME%\bin;%JAVA_HOME%\lib; %ANT_HOME%\bin;%CATALINA_HOME%\bin
2)下载软件并安装
a) 下载jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
直接执行,安装在默认路径下。
配置:
[新建]JAVA_HOME= C:\Program Files\Java\jdk1.6.0_10
[新建]CLASSPATH= .;% JAVA_HOME %\lib;% JAVA_HOME %\lib\dt.jar;% JAVA_HOME %\lib\tool.jar
b) 下载 apache-ant-1.7.0-bin.zip
新建目录D:\apache-ant-1.7.0,解压到该文件夹。
[新建]ANT_HOME=D:\apache-ant-1.7.0\apache-ant-1.7.0
c) 下载 apache-tomcat-5.5.20.zip
新建目录D:\apache-tomcat-5.5.20,解压到该文件夹。
[新建]CATALINA_HOME= D:\apache-tomcat-5.5.20\apache-tomcat-5.5.20
打开命令行,执行startup.bat启动,在浏览器输入http://localhost:8080/,显示Tomcat欢迎页,则表示成功。


下载补丁tomcat-native-1.1.2.tar.gz,解压后直接把tomcat-native-1.1.2.tar.gz拷贝到D:\apache-tomcat-5.5.20\apache-tomcat-5.5.20bin\下,并备份原来的tomcat-native.tar.gz,然后把tomcat-native-1.1.2.tar.gz改名tomcat-native.tar.gz
d) 下载axis-bin-1_4.zip
解压,把解压出来的axis目录复制到tomcat目录下的webapps目录下,将axis/WEB-INF/lib目录下的文件复制到tomcat目录下的common/lib目录下,重新启动tomcat,在浏览器输入http://localhost:8080/axis/happyaxis.jsp,能访问则表示设置成功。
axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器

e) 下载ws-core-4.0.3-bin.zip
新建目录D:\globus\wrsf,解压到该文件夹。
[新建]GLOBUS_LOCATION=D:\globus\wrsf
3) 部署GT4到tomcat
打开命令行,输入globus-start-container -nosec
再打开命令行,在D:\globus\wrsf路径下,输入
D:\globus\wrsf>ant -f share/globus_wsrf_common/tomcat/tomcat.xml deploySecureTomcat -Dtomcat.dir=%Catalina_home%
然后,重新启动tomcat,可以在命令行接着输入:
D:\globus\wrsf> startup.bat
在浏览器输入http://localhost:8080/wsrf/services,显示成功。

至此,win7环境下gt4配置完成。

2、GT4在fedora9平台下的安装

1) 安装jdk
打开终端,使用命令cd  /usr/local/Linux平台下软件/ 进入JDK安装文件所在路径, 将JDK安装在默认路径下。
设置环境变量,打开~/.bash_profile文件,可以用vi打开
root# vi ~/.bash_profile
在文件中加入
export JAVA_HOME=/usr/java/jdk1.6.0_23
export CLASSPATH=/usr/java/jdk1.6.0_23/lib/dt.jar:/usr/java/jdk1.6.0_23/jre/lib/rt.jar:.
因为使用的是fedora core系统,还需要做如下设置,以便使系统默认使用我们刚刚安装的jdk:
root#/usr/sbin/alternatives --install /usr/bin/java java /usr/java/j2sdk1.4.2_11/bin/java 2
root#  /usr/sbin/alternatives --config java
选择3,即刚刚安装过的jdk路径
root# /usr/sbin/alternatives --install /usr/bin/javac javac /usr/java/j2sdk1.4.2_11/bin/javac 2
root# /usr/sbin/alternatives --config javac
这里选择2,即刚刚安装过的jdk路径
此处还要将安装的jdk的bin路径加大环境变量PATH前面,即打开~/.bash_profile文件,在文件末尾添加:
export PATH=/usr/java/j2sdk1.4.2_11/bin:$PATH
2)安装ANT
下载ant压缩文件apache-ant-1.6.0-bin.tar.gz, 解压后,将所有文件复制到 /usr/local/ant下 ,然后设置环境变量
root# vi ~/.bash_profile
在文件中加入
export ANT_HOME=/usr/local/ant
在终端运行ant,出现

说明ant设置成功
3)安装PostgreSQL
创建安装文件放置路径
创建用户并授权给安装文件路径
root# mkdir /usr/post_install
root# adduser postgres
root# chown postgres:postgres /usr/post_install
下载postgresql-8.1.3.tar.bz2,并放在post_install目录下,解压软件
root# su postgres
postgres$ tar -jxvf /usr/post_install/postgresql-8.1.3.tar.bz2
进入源代码目录
postgres$ cd /usr/pos_install/postgresql-8.1.3
配置编译选项
postgres$ mkdir /usr/local/pgsql
root# chown postgres:postgres /usr/local/pgsql
postgres$ ./configure --prefix=/usr/local/pgsql
其中/usr/local/pgsql使我们指定的将要安装的目录
编译
postgres$ gmake
安装
postgres$ gmake install
创建数据库存储目录
root# mkdir -p /etc/database/pgsql_data/
root# chown postgres:postgres /etc/database/pgsql_data/

初始化数据库
postgres$ /usr/local/pgsql/bin/initdb -D /etc/database/pgsql_data/
设置共享库
root#  /sbin/ldconfig /usr/local/pgsql/lib
设置环境变量
root# vi ~/.bash_profile
启动数据库服务
postgres$ /usr/local/pgsql/bin/pg_ctl -D /etc/database/pgsql_data -l logfile start
启动脚本,以便系统启动时自动加载PostgreSQL服务
将源码文件夹下的linux文件拷贝到init.d下
root# cp /usr/post_install/postgresql-8.1.3/contrib/start-scripts/linux /etc/init.d/postgresql
编辑此文件
root# vi /etc/init.d/postgresql
更改参数为自己安装时设定的目录
# Installation prefix
prefix=/usr/local/pgsql   注:安装目录
# Data directory
PGDATA="/etc/database/pgsql_data"   注:数据库目录
最后修改权限
root# chmod a+x /etc/init.d/postgresql
root# chkconfig --add postgresql

4)安装zlib库
下载zlib-1.2.3.tar.gz后,解压缩
编译准备
root# ./configure --prefix=/usr --shared
编译
root# make
测试共享库
root# make check
安装共享库
root# make install
编译并安装静态库
root# make clean
root# ./configure --prefix=/usr
root# make
root# make check
root# make install
修改静态库权限
root# chmod 644 /usr/lib/libz.a
将库转移到通常的/lib目录下
root# mv /usr/lib/libz.so.* /lib
root# ln -sf ../../lib/libz.so.1 /usr/lib/libz.so
5)安装lam-mpi
下载文件lam-7.1.2-1.i586.rpm
root# rpm -ivh lam-7.1.2-1.i586.rpm
root# lamboot

安装成功
注:此处fedora 9缺少libaio.so库,在此我采取yum install libaio进行安装。
6)安装GT4.0.8
用root用户创建 globus 用户,并创建安装目录,将权限付给globus
root# mkdir /usr/local/globus-4.0.8
root# chown globus:globus /usr/local/globus-4.0.8
下载GT4.0.8原文件包,用 globus 用户解压并进行配置。
注:安装用原文件应该用globus用户解压到一个权限归globus用户所有的文件夹,否则下边的命令将出现权限错误
进入解压目录后,进行编译设置
globus$ export GLOBUS_LOCATION=/usr/local/globus-4.0.8
globus$ ./configure --prefix=$GLOBUS_LOCATION
编译
globus$ make
安装
globus$ make install
7)安全配置
globus$ source $GLOBUS_LOCATION/etc/globus-user-env.sh
globus$ $GLOBUS_LOCATION/setup/globus/setup-simple-ca
出现Do you want to keep this as the CA subject (y/n) [y]:
输入y
Enter the email of the CA (this is the email where certificate
requests will be sent to be signed by the CA):
输入[email protected]
出现Enter the number of DAYS
the CA certificate should last before it expires.
[default: 5 years (1825 days)]:
输入RETURN
输入密码:
Enter PEM pass phrase:******
Verifying - Enter PEM pass phrase:******
出现setup-ssl-utils: Complete时说明已经创建一个CA并完成了认证,下面我们将获得到这台机器的hostcert:
root# source $GLOBUS_LOCATION/etc/globus-user-env.sh
root# grid-cert-request -host `hostname`
用globus用户自己的simpleCA来进行签证:
globus$  grid-ca-sign -in /etc/grid-security/hostcert_request.pem -out hostsigned.pem
出现please enter the password for the CA key:******
时输入先前设置的密码
复制那个认证过的证书到/etc目录下:
root#  cp /home/globus/hostsigned.pem /etc/grid-security/hostcert.pem
最后还要将hostsigned.pem拷贝到globus用户目录下的globus目录;
即:globus$cp hostsigned.pem ~/.globus/
添加授权

可以使用grid-mapfile-add-entry命令向grid-mapfile文件中添加用户
root# $GLOBUS_LOCATION/sbin/grid-mapfile-add-entry -dn "/O=Grid/OU=GlobusTest/OU=simpleCA-mayed.mcs.anl.gov/OU=hostname/CN=user" -ln globu
8)开启globus-start-container

至此,linux下gt4安装完毕


3、实现Linux网格环境下web服务

下载所需要的文件解压到Examples_DIR下,并将Example_DIR拷贝至linux下/home/globus/Examples_DIR下执行
1)生成gar文件:
./globus-build-service.sh -d org/globus/examples/services/core/first/ -s schema/examples/MathService_instance/Math.wsdl
执行结果:

然后在Examples_DIR目录下生成org_globus_examples_services_core_first.gar
2)将服务部署到web服务容器上:
globus-deploy-gar $EXAMPLES_DIR/org_globus_examples_services_core_first.gar

先在globus用户下启动容器globus-start-container
可以查看部署的服务:

3)source $GLOBUS_LOCATION/etc/globus-devel-env.sh
4)验证,用一个简单的客户端程序验证发布的服务是否可用:
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
可以出现结果,证明可用。

4、实现Windows网格环境下web服务

预先安装python
1)进入DOS命令,在D:\progtutorial-examples_0.2.1下执行globus-build-service.py -d org/globus/examples/services/core/first/ -s schema/examples /MathService_instance /Math.wsdl
生成
D:\progtutorial-examples_0.2.1\org_globus_examples_services_core_first.gar.

2)D:\progtutorial-examples_0.2.1下运行:
globus-deploy-gar D:\progtutorial-examples_0.2.1/org_globus_examples_services_core_first.gar(需要python支持)

运行globus-start-container –nosec

在E:\ws-core-4.0.2目录下执行
ant -f share/globus_wsrf_common/tomcat/tomcat.xml deploySecureTomcat -Dtomcat.dir=" D:\apache-tomcat-5.5.34 "
重新启动tomcat,输入http://localhost:8080/wsrf/services你就可以看到所部署的服务了!

在d:\globus\wrsf\etc下执行  globus-devel-env.bat(将Globus的类库注册到系统的classpath中)
然后在D:\progtutorial-examples_0.2.1执行
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://59.64.158.10:8080/wsrf/services/examples/core/first/MathService会出现和Linux实例一样的结果。

5、实现Windows与linux Web服务通信,完成计算

修改windowns客户端的代码,实现1+…50,修改linux下代码,实现51+…100 windows下执行
java -classpath .\build\stubs\classes\;"%CLASSPATH%" org.globus.examples.clients.MathService_instance.Client http://localhost:8080/wsrf/services/examples/core/first/MathService 

linux下执行
java -classpath ./build/stubs/classes/:$CLASSPATH \
org.globus.examples.clients.MathService_instance.Client \
http://59.64.158.10:8080/wsrf/services/examples/core/first/MathService

可得到执行结果5050.

四、实验心得

在win7下和linux下配置gt4都出现过很多问题,尤其是fedora9下问题最多,这是因为对linux下命令操作不习惯、不熟悉。
1) 在win7下装gt4时,开启tomcat总是出现错误: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled这是因为缺少mail.jar和activation.jar,下载这两个包并将其放入tomcat/common/lib和axis-1_4\lib目录下即可。
2) Win7下启动tomcat 时 报Unrecognized Windows Sockets error: 0: JVM_Bind,这是因为8080端口被其他进程占用,使用命令netstat -aon|findstr与tasklist|fidstr即可查出占用端口的进程,用任务管理器将其关闭即可。
3) 最初我安装的是fedora12,在编译gt4的时候总是报错:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token proxy policy.h,查询资料后才知道是openssl1.0.0与gt4不兼容的问题,于是我卸载了openssl1.0.0,结果系统崩溃,最后我重装了fedora9,默认的openssl是0.9.8版本,问题解决
4) 最初在linux下我装的是gt4.2.1版本,测试web服务的时候,生成gar文件时报错:[java] Error processing WSDL: Could not read WSDL input file:,经查询才知道是java网络服务与gt4.2.1版本不兼容,不得不卸载gt4.2.1,重新安装gt4.0.8,至此问题解决。
5) 在windows下进行简单开发时,不能生成gar包,因为需要phyton的支持。下载phyton工具并安装,安装完成后进行gar包的生成命令即可。
6) 将WEB-INF/lib目录下的文件复制到%CATALINA_HOME%\common\lib目录下;会发现
E: \axis-1_4下没有WEB-INF/lib文件,最后在\axis-1_4\webapps\axis\WEB-INF\lib下复制的此文件
7) linux支持多用户,用户的权限不熟悉,总是出现permission denied错误
8) 刚开始环境变量设置不全面,总是出现此命令非法的错误
9) 不熟悉在linux下安装软件,通过学习发现一般都是./configure,make,make install这三步。
10) 在linux下打开文件用vi或gedit命令,若要进入编辑状态使用按键i,退出esc即可取消插入。

五、相关代码

package org.globus.examples.clients.MathService_instance;

import org.apache.axis.message.addressing.Address;
import org.apache.axis.message.addressing.EndpointReferenceType;

import org.globus.examples.stubs.MathService_instance.MathPortType;
import org.globus.examples.stubs.MathService_instance.GetValueRP;
import org.globus.examples.stubs.MathService_instance.service.MathServiceAddressingLocator;

public class Client {

public static void main(String[] args) {

MathServiceAddressingLocator locator = new MathServiceAddressingLocator();
try {
String serviceURI = args[0];

// Create endpoint reference to service
EndpointReferenceType endpoint = new EndpointReferenceType();
endpoint.setAddress(new Address(serviceURI));
MathPortType math = locator.getMathPortTypePort(endpoint);

// Get PortType
math = locator.getMathPortTypePort(endpoint);

for(int i = 1; i <= 50; i++)
math.add(i);//windows下是1+……+50,linux下类似,51+……+100即可

// Access value
System.out.println("Current value: "
+ math.getValueRP(new GetValueRP()));

} catch (Exception e) {
e.printStackTrace();
}
}

}

你可能感兴趣的:(GT4)