WebService 优化开发环境

来源:互联网 发布:mac office 检查更新 编辑:程序博客网 时间:2024/05/20 23:37

直接将类文件放入到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.batJVM启动成功,显示如下:

 

③ 设置断点:

 

④ 配置debug,新建一个远程JAVA应用,命名为Debug Axis,如下图所示

 

⑤ 运行Client,进行调试:

 

自动生成代码:

① 修改build.xml文件,加入tasktarget

 

② 添加一个环境变量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项目,然后可以进行调试(详细过程见实验步骤)。


 

0 0