直接将类文件放入到Axis中:
由于我们每一次对web服务做出更改后都需要重新拷贝我们的*.class文件,这使得我们的操作非常不便,所以我们做如下处理:
① 新建文件夹out并关联至C:\axis\repository\services\SimpleService:
成功后工程中不再存在bin文件。
② 同样的,我们需要将resources中的services.xml以及SimpleService.wsdl导入C:\axis\repository\services\SimpleService中,对resources重命名为META-INF,并移动至src中,同时在SimpleServiceSkeleton.java中将result改为大写,如下所示:
③ 重启Axis2 server,运行Client,结果显示如下:
使改变立即生效:
还原上面的代码更改:
然后运行Client,显示如下:
我们发现改变没有立即生效。
由于更改后虽然文件关联正确,但是必须重启Axis2 serve后改变才能生效,所以为了使改变立即生效我们必须做如下处理:
① 修改c:\axis\conf\axis2.xml文件:
改为:
② 保存,然后重启Axis Server。
③ 更改SimpleServiceSkeleton.java文件,将
改为:
④ 运行Client,运行结果如下所示:
如此可见,无需再重启Axis Server即可使改变立即生效,并且我们可以看到每更改一次服务,并且运行后,Server就自动重新部署新的服务:
调试一个web服务:
① 打开cmd,转到c:\axis\bin下,然后输入下面内容设置环境变量(Axis Server关闭):
c:\axis\bin>set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,
server=y,suspend=n(必须在同一行键入)
② 继续在cmd里启动axis2server.bat,JVM启动成功,显示如下:
③ 设置断点:
④ 配置debug,新建一个远程JAVA应用,命名为Debug Axis,如下图所示:
⑤ 运行Client,进行调试:
自动生成代码:
① 修改build.xml文件,加入task和target:
② 添加一个环境变量AXIS2_HOME,如下所示:
③ 重命名SimpleServiceSkeleton.java 文件为SimpleServiceImpl.java:
④ 删除Server包里的除了SimpleServiceImpl.java的所有java文件,以及META-INF里的文件,如下图所示:
⑤ 继续选择“Window | Preferences |Ant | Runtime”,打开“Ant Home”,在c:\eclipse1\plugins里选择org.apache包:
⑥ 为了运行ant,选中build.xml文件,右击选择2Ant Build:
⑦ 在弹出的的窗口里选择"generate-service" target,注意一定要去除掉原有选项,然后运行,如下图所示:
运行结果如下图所示:
⑧ 刷新工程,我们可以看到所有的文件都已自动生成:
⑨ 上述过程完成了自动生成代码的功能,但是如果我们再次更改了SimpleService.wsdl文件时,我们必须再次重复上述过程来生成文件,因为默认是不会再生成已存在的代码的。所以我们需要再次修改build.xml文件,使得所有的文件能够被重写,如下所示:
但是我们发现如果按这种方法生成文件的话,会使得services.xml中的内容全部为空,所以我们需要在重写该文件之前将其删除,在"generate-service"target中加入删除语句(<delete file="src/META-INF/services.xml"/>),如下图所示:
再次按上述方式运行build.xml,运行结果如下所示:
再次刷新并查看我们的services.xml文件,发现已经重写成功!!!
但是,如此一来我们在SimpleServiceSkeleton中更改的内容也随之消失,所以我们需要新建SimpleServiceImpl类来实现web service:
通过下面代码我们可以了解到现在是SimpleServiceSkeleton类实现web服务:
⑩ 我们再次更改build.xml代码,让其能够自动的用SimpleServiceImpl类来代替SimpleServiceSkeleton类来实现web服务,修改部分如下所示:
再次按以上方式运行build.xml,刷新工程,打开services.xml,发现实现服务的类已被更改,如下图所示:
注:实验室电脑中apache ant 版本问题,无法成功代替。如下图所示:
自动生成客户端代码:
① 修改build.xml 客户端代码,如下所示:
② 删除除了我们所创建的SimpleClient.java文件之外的所有客户端文件:
③ 选中build.xml文件,右击选择2 Ant Build:
④ 在弹出的的窗口里选择"generate-client" target,注意一定要去除掉原有选项,然后运行,如下图所示:
运行结果如下图所示:
⑤ 刷新工程,我们可以看到客户端文件都已自动生成:
⑥ 再次运行Client,结果如下图所示:
分析与讨论
1.若无需手动将相关文件拷贝到Axis服务器中的service文件夹中来发布一个服务,你该如何做?
2.为了保证你的Java代码的改变立刻生效,你该如何做?
3.如何调试一个web服务?
Answer:
1. 首先设置结果输出文件夹,然后将它连接到Axis服务器对应的发布文件夹,再将所有需要配置的文件都复制到out文件夹中,这样就实现了无需手动就将相关文件拷贝到service 文件中来发布服务了(详细过程见实验步骤)。
2.为了保证我们的Java代码的改变立刻生效,我们需要配置build.xml文件,将“hotupdate”值修改为true(详细过程见实验步骤)。
3.为了调试一个web服务,在启动axis服务器之前,我们需要在命令行中配置以下代码:set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,
server=y,suspend=n(必须同一行中输入)。然后在命令行中直接启动axisServer.bat服务器,接着设置断点,修改debug的属性,新建一个名为remote java application的debug项目,然后可以进行调试(详细过程见实验步骤)。