Axis开发web services

 

环境系统:Windows xp home

          Axis-1_4

                WebLogic 9.2

          jdk150_04

          MyEclipse 5

 

做个简单的HelloWorld

1.配置WebLogic如图

2.创建一个Web Project 起名example

 

这里的Context root URL可以自己修改,但前面一定要有“/”。

3.创建Package 起名 com.servicesHelloWorld

编写HelloWorld.java

 

package com.services;

 

public class HelloWorld {

      

       public String sayhello(String message){

             

              System.out.println("sayhello"+message);

              return "Here is the message: '" + message + "'";

       }

 

}

4.配置Axis

a.导入Axis运行组件包到WEB-INF/LIB目录下

axis.jar

jaxrpc.jar

saaj.jar

commons-logging.jar

commons-discovery.jar

wsdl4j.jar

这些包是AXIS运行所必须的

b.用Axis中的web.xml替换web应用程序WEB-INF目录下的同名文件。

这个xml文件是用来控制WEB行为的。所以用Axis开发,一定要用Axisweb.xml

c.添加server-config.wsdd文件来初始化SOAP消息管道

server-config.wsdd如下:

<?xml version="1.0" encoding="UTF-8"?>

<deployment xmlns=http://xml.apache.org/axis/wsdd/ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 <globalConfiguration>

  <parameter name="sendMultiRefs" value="true"/>

  <parameter name="disablePrettyXML" value="true"/>

  <parameter name="adminPassword" value="admin"/>

<parameter name="attachments.Directory"

value="E:/Tomcat 5.0/webapps/axis/WEB-INF/attachments"/>

  <parameter name="dotNetSoapEncFix" value="true"/>

  <parameter name="enableNamespacePrefixOptimization" value="false"/>

  <parameter name="sendXMLDeclaration" value="true"/>

  <parameter name="sendXsiTypes" value="true"/>

  <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>

  <requestFlow>

   <handler type="java:org.apache.axis.handlers.JWSHandler">

    <parameter name="scope" value="session"/>

   </handler>

   <handler type="java:org.apache.axis.handlers.JWSHandler">

    <parameter name="scope" value="request"/>

    <parameter name="extension" value=".jwr"/>

   </handler>

  </requestFlow>

 </globalConfiguration>

 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>

 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>

 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

 <service name="AdminService" provider="java:MSG">

  <parameter name="allowedMethods" value="AdminService"/>

  <parameter name="enableRemoteAdmin" value="false"/>

  <parameter name="className" value="org.apache.axis.utils.Admin"/>

  <namespace>http://xml.apache.org/axis/wsdd/</namespace>

 </service>

 <service name="Version" provider="java:RPC">

  <parameter name="allowedMethods" value="getVersion"/>

  <parameter name="className" value="org.apache.axis.Version"/>

 </service>

 <service name="getServices" provider="java:RPC">

  <parameter name="allowedMethods" value="sayhello"/>

  <parameter name="className" value="com.services.HelloWorld"/>

 </service>

 <transport name="http">

  <requestFlow>

   <handler type="URLMapper"/>

   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>

  </requestFlow>

  <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>

  <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>

  <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>

  <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>

  <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>

  <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>

 </transport>

 <transport name="local">

  <responseFlow>

   <handler type="LocalResponder"/>

  </responseFlow>

 </transport>

</deployment>

创建server-config.wsdd一般有两种种方法

1,   如果已经有wsdd文件,直接修改就可以了,修改黑体部分。

2,   如果没有也没关系,axis下的AdminClient能够自动创建合适的wsdd文件,具体方法如下:

首先,写一个deploy.wsdd文件

Deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

                      xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java">

         <handler type = "java:org.apache.axis.handlers.http.URLMapper" name = "URLMapper"/>

         <service name = "getServices" provider = "java:RPC">

                   <parameter name = "className" value = "com.services.HelloWorld"/>

                   <parameter name = "allowedMethods" value = "sayhello"/>

         </service>

</deployment

 

对文档中的黑体部分进行修改,以便生成合适你的server-cofig.wsdd文件。保存并放在axisweb-inf目录下

然后启动TOMCAT,如果不启动TOMCAT,就无法生成server-config.wsdd,会抛出connect refused.异常

在命令行中输入:

Java org.apache.axis.client.AdminClient deploy.wsdd

提示成功,然后就会在WEB-INF目录下看到server-config.wsdd文件了

然后,把生成的server-config.wsdd文件放到WEB-INF目录下

5.部署到WEBLOGIC

启动应用服务器,自动部署

这里也可以选择在console平台手工部署下,或者用Antweblogic.ant.taskdefs.management.WLDeploy)任务来实现部署。

启动成功

 

6.生成WSDL文件

输入http://localhost:7001(端口)/example(Context root URL在创建工程时输入的)/services(生成WSDL)/getServices(服务名,在server-config.wsdd文件中能找到,是可以手动修改的)?wsdl

生成WSDL,说明服务发布成功了。

Axis提供了JAVA2WSDL工具来生成WSDL

 

<?xml version="1.0" encoding="UTF-8" ?>

<wsdl:definitions

targetNamespace=http://localhost:7001/example/services/getServices

xmlns:apachesoap=http://xml.apache.org/xml-soap

xmlns:impl=http://localhost:7001/example/services/getServices

xmlns:intf=http://localhost:7001/example/services/getServices

xmlns:soapenc=http://schemas.xmlsoap.org/soap/encoding/

xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/

xmlns:wsdlsoap=http://schemas.xmlsoap.org/wsdl/soap/

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!-- WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT)-->

<wsdl:message name="sayhelloRequest">

  <wsdl:part name="message" type="xsd:string" />

  </wsdl:message>

<wsdl:message name="sayhelloResponse">

  <wsdl:part name="sayhelloReturn" type="xsd:string" />

  </wsdl:message>

<wsdl:portType name="HelloWorld">

<wsdl:operation name="sayhello" parameterOrder="message">

  <wsdl:input message="impl:sayhelloRequest" name="sayhelloRequest" />

  <wsdl:output message="impl:sayhelloResponse" name="sayhelloResponse" />

  </wsdl:operation>

  </wsdl:portType>

<wsdl:binding name="getServicesSoapBinding" type="impl:HelloWorld">

  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

<wsdl:operation name="sayhello">

  <wsdlsoap:operation soapAction="" />

<wsdl:input name="sayhelloRequest">

<wsdlsoap:body

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="http://services.com"  

use="encoded" />

  </wsdl:input>

<wsdl:output name="sayhelloResponse">

<wsdlsoap:body

encodingStyle=http://schemas.xmlsoap.org/soap/encoding/

namespace="http://localhost:7001/example/services/getServices"

use="encoded" />

  </wsdl:output>

  </wsdl:operation>

  </wsdl:binding>

<wsdl:service name="HelloWorldService">

<wsdl:port binding="impl:getServicesSoapBinding" name="getServices">

  <wsdlsoap:address location="http://localhost:7001/example/services/getServices" />

  </wsdl:port>

  </wsdl:service>

  </wsdl:definitions>

在看一下Weblogic console,选择deploments

从中可以看到,_appsdir_example_dir(autodeployed)  

 处于Active(激活)状态,服务发布成功。

7.写个客户端测试

HelloClient.javacom.client包下)

启动服务器,运行客户端

运行结果

在服务器日志中能够看到:

Sayhellohello hugh,welcome!

在客户端端能够看到:

Here’s the message:’hello hugh,welcome!’

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值