加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webService环境搭建

发布时间:2020-12-16 23:52:03 所属栏目:安全 来源:网络整理
导读:axis2创建web service(一) ????????????????????????????????????????????? ?????? ?作者:张涛? axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。下面让我们以一个实际的例子来体验一下。 首先,工欲善其事,必先利其器

axis2创建web service(一)

??????????????????????????????????????????????????? ?作者:张涛?

axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。下面让我们以一个实际的例子来体验一下。

首先,工欲善其事,必先利其器。就让我们先做好一些必备的准备工作吧。

?

1.下载axis2 的2进制的包和war,现在的最新版本是1.4.1 发布时间是2008-8-25

地址分别是:http://apache.mirror.phpchina.com/ws/axis2/1_4_1/axis2-1.4.1-bin.zip

??????????????????http://apache.mirror.phpchina.com/ws/axis2/1_4_1/axis2-1.4.1-war.zip

2.把下载后的war放入tomcat的webapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2

在浏览器中输入http://localhost:8080/axis2/?,如果一切正常你会看到下面的画面




?
?3,就开始准备一下axis2的eclispe的插件了。axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。

下载地址是

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-service-archiver-wizard.zip

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-codegen-wizard.zip

下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other

如果安装正确你会看到(下面的红色圈圈里未必就一定能看到这两项,我用eclipse,有时显示的是1个,有时显示3个,总之让人很郁闷,后来我用了MyEclipse6.5来完成这个Demo的。



?这样准备工作就都做好了。接下来就是正式开发了。


axis2创建web service(二)

    博客分类:
  • web service
Web Tomcat XML IDEA

工具都已经准备齐全了。我们来动手做一个小例子来小试牛刀!

这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。

我们的服务很简单的,就是输入一个字符串,然后打印出一段字符串。

代码很简单,主要是测试用。

?

Java代码 ?

收藏代码

  1. package?com.deltaj.server;??
  2. ??
  3. public?class?SimpleServer?{??
  4. ????/**?
  5. ?????*?简单的测试方法?
  6. ?????*??
  7. ?????*/??
  8. ????public?String?simpleMethod(String?name)?{??
  9. ????????return?name?+?"Say?this?is?a?Simple?method?^-^";??
  10. ????}??
  11. }??

主要的过程就是如何利用axis2的eclispe插件来发布这个服务啦。

1。在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Service Archiver

2.然后点击next进入了类选择页面,在这个页面中的Class?File Location选择框中选择类所在的文件夹。 (这里填写的主要是经过编译后的java类,即java.class文件所存放位置的根目录,比如myEclipse的目录则是E:YANGSworkspacemyserviceWebRootWEB-INFclasses,myservice是我的项目名,当然,我创建的是web project,如果是java project,请根据实际情况填写。写这个路径是为了下面操作,来寻找java类


?3.点击next之后进入了选择 wsdl文件,这里我们选择skip wsdl。

4. 点击next之后,进入的是选择jar文件的页面,这里我们没有外部的jar,所以点击next直接跳过这个页面。


?4.点击next之后,进入的是选择xml页面,这里我们选择的是自动生成xml,也就是勾选

Generate the service xml automatically这一项


?5.点击next之后,进入的是生成xml文件的页面,在service name 里填写这个服务所起的名字,这里我起名为simpleServer,然后在class name 中填写要发布的类,这里一定要写全路径,写好后就可以点击load 按钮,

如果一切ok的话,你会看到如下画面(这里最常见的问题就是Class not found,经过测试,发现直接在src目录下创建java类,是可以Load到类方法的,但是只要放在自己创建的包名下,就load不到,比如放在com.test包下面的类就load不到。


?6 点击next 后,进入的是输出artiver文件的页面,先要在output File?location 中选择要输出的路径,

?? 在output? File Name中输入artiver文件的名称。我起的名字是simpleServer


?7.点击finish ,如果看到如下的画面,恭喜你,服务发布成功啦。

8.接下来,我们就可以把这个aar文件放入tomcat中发布,首先把生成的aar文件拷贝到tomcat目录中的axis2项目的service目录中位置如图。



?

9.接下来启动tomcat,在地址栏中输入http://localhost:8080/axis2?,你会看到axis2的欢迎画面


?

10.点击Service连接,你会看到发布的服务列表。这里面就能看到我们发布的simpleService


?11.点击我们的服务simpleServer的连接,我们会看到。至此,服务发布成功。

axis2创建web service(三)

    Web Eclipse log4j Myeclipse XML

?????? 这节我们就来写一个客户端来调用一下这个服务。主要关注一下如何用elispe的axis2的插件来生成stub代码。

1.在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Code Generator




?

2.点击next,进入下一个页面,选择从wsdl文件来产生java文件。


?

3. 点击next,然后选择wsdl文件,注意此处要填写上一节我们

?4.点击next,进入设置页面,这里我们就用默认的设置。


?

5.?点击next,选择输出文件的路径。(这里点击finish,MyEclipse6.5会报错,An error ocurred while completing process
-java.lang.reflect.InvocationTargetException,解决办法是:

1.关闭 Eclipse

2.copy? %AXIS2_HOME%lib 下的
backport-util-concurrent-3.1.jar 和?geronimo-stax-api_1.0_spec-1.0.1.jar
复制到 MyEclipse 6.5eclipsepluginsAxis2_Codegen_Wizard_1.3.0lib 文件夹下。

3.注册此 jar 包:?
修改MyEclipse 6.5eclipsepluginsAxis2_Codegen_Wizard_1.3.0plugin.xml 文件
在 <runtime> 內加入下面的字串?
??? <library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">?
?????? <export name="*"/>?
?? </library>?
??? <library name="lib/backport-util-concurrent-3.1.jar">?
??????? ? <export name="*"/>?
??? </library>

到plugin.xml文件中,保存后重新启动Eclipse即可。

- 若问题仍存在,尝试改变Eclipse 使用的 JRE,换成 JAVA 6
- 使用 JRE 1.6 启动 Eclipse 后,若仍有问题,试着加入 -clean 参数启动 Eclipse,清除 osig cache:
eclipse.exe -vm "c:javajre1.6.0_05binjava.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M


- 关闭 Eclipse 后,再以一般方式启动 Eclipse,应可解决问题



?

6.点击next,如果看到这个页面,恭喜你已经生成代码成功。


?

7.在package Explorer中刷新一下项目,然后你发现出现2个新的文件SimpleServerStub和SimpleServerCallbackHandler 。打开SimpleServerStub你会惊喜的发现。著名的小红叉一个接一个的(报错,是因为没有引用jar包,最直接的方法是把axis2-1.4.1lib目录下所有的jar包都引用到项目中

这是因为没有axis2的类包。我们可以在下载的axis2-1.4.1-bin中找到lib包,把其中的jar都加入我们的工程中。

然后重新编译一下工程,这时我们发现SimpleServerStub还是有几个小红叉。这个是因为这个插件有个小bug。

生成的代码没有实现序列化方法。我们可以自己来加上,在小红叉上点一下,弹出一个小菜单,选择

Add unimplemented methods .



?

8.

?*?调用发布的服务。?
  • ?*??
  • ?*/??
  • class?SimpleClient?{??
  • ???
  • ?static?void?main(String[]?args)?throws?Exception{??
  • ????
  • ??//初始化桩文件??
  • ??SimpleServerStub?stub?=?new?SimpleServerStub();??
  • //初始化SimpleMethod方法。??
  • ??SimpleServerStub.SimpleMethod?request?=?new??SimpleServerStub.SimpleMethod();??
  • //调用simpleMethod的setName方法。??
  • ??request.setName("zt");??
  • //??
  • ??System.out.println(stub.simpleMethod(request).get_return());??
  • ?}??
  • ?? 如果一切正常,你就会看到结果

    log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
    log4j:WARN Please initialize the log4j system properly.
    ztSay this is a Simple method ^-^。

    调用服务成功。这是个简单的例子,下节我们再做一个复杂一点的例子,来更好的学习axis2

    axis2创建web service(四)

      Web Bean log4j Eclipse QQ
  • ????? 上节我们做了一个简单的例子,调用的服务里的方法只是简单返回一个字符串,这次我们要做一个复杂点的例子,调用服务里的方法返回一个java Bean对象。

    ??????

    ?????? 1. 首先做一个简单的java bean ,代码如下

    class?Persion?{??
  • //?姓名??
  • private?String?name;??
  • //?年龄??
  • private?int?age;??
  • public?String?getName()?{??
  • return?name;??
  • void?setName(String?name)?{??
  • this.name?=?name;??
  • int?getAge()?{??
  • return?age;??
  • void?setAge(int?age)?{??
  • this.age?=?age;??
  • 2.做一个服务,里面只发布一个方面,这个方法返回这个bean。

    class?BeanServer?{??
  • public?Persion?testMethod(String?name,? ????????Persion?persion?=?new?Persion();??
  • ????????persion.setName(name);??
  • ????????persion.setAge(age);??
  • return?persion;??
  • ?3.按照第二节的做法,把这个服务发布出来。

    ? 4.同样按照第三节的方法,用这个wsdl来生成stub代码。

    ??5.然后我们开始做一个方法来调用一下这个服务。

    package?com.deltaj.client;??
  • import?com.deltaj.server.TestServerStub;??
  • class?BeanClient?{??
  • ????????//?初始化桩文件??
  • ????????TestServerStub?stub?=?new?TestServerStub();??
  • //?初始化TestMethod方法。??
  • ????????TestServerStub.TestMethod?request?=?new?TestServerStub.TestMethod();??
  • //?设置bean的属性值。??
  • ????????request.setName("delta?");??
  • ????????request.setAge(20);??
  • //?????
  • ????????System.out.println("The?name?is:"+stub.testMethod(request).get_return().getName());??
  • ????????System.out.println("The?age?is:"+stub.testMethod(request).get_return().getAge());??
  • 6.如果按照这里说的做的话,你会看到

    log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
    log4j:WARN Please initialize the log4j system properly.
    The name is:delta?
    The age is:20

    祝你好运。:)

  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读