`
stefshawn
  • 浏览: 898 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
第一部分: 安装Axis

第一步: 下载Axis
从Apache网站下载Axis发布包:
http://ws.apache.org/axis/

我下载的是
Axis 1.4 Final 版


第二步: 解压Axis压缩包
把下载的axis-bin-1_4.zip包解压缩到一个文件夹,可以是任意的,但如果文件夹包含中文名时,在中间有些过程需要对中文进行一些处理,否则可能出错;
我把axis-bin-1_4.zip解压到 F:\AXIS_Study,解压后的目录结构是这样的:
F:\AXIS_Study
    |
    |____axis-bin-1_4
    |
    |-----docs (文件夹)
    |
    |-----lib (文件夹)
    |
    |-----samples (文件夹)
    |
    |-----webapps (文件夹)
    |
    |-----xmls (文件夹)
    |
    |-----LICENSE
    |
    |-----NOTICES
    |
    |-----README
    |
    |-----release-notes.html

第三步:准备Web Server
准备一个Web Server,基本上所有主流的Web Server都可以,为了节省资源,我使用Tomcat5.5.23来讲解这个例子,大家可以自行到Apache网站上下载该版本的Tomcat。


第四步: 配置Tomcat
进入Tomcat目录,在conf/Catalina/localhost目录下新建一个XML文件,命名为axis.xml,然后在文件中输入如下内容:

Xml代码
1.<?xml version="1.0" encoding="gb2312"?>   
2.<!--  
3.Axis学习工程  
4.-->   
5.<Context docBase="F:/AXIS_Study/axis-bin-1_4/webapps/axis" >   
6.</Context>  
<?xml version="1.0" encoding="gb2312"?>
<!--
Axis学习工程
-->
<Context docBase="F:/AXIS_Study/axis-bin-1_4/webapps/axis" >
</Context>

这个文件是用来在Tomcat中配置一个Web应用的,这不在本次课程的范围,大家可以自行找相关资料来看。注意在文件中
docBase="F:/AXIS_Study/axis-bin-1_4/webapps/axis"
是指向Axis解压目录下面的webapps/axis目录,大家根据自己的目录结构自行修改


第五步:启动Tomcat
进入到Tomcat安装目录下的bin目录,找到startup.bat并执行之,在启动过程中,控制台窗口应该会出现以下信息:
2008-5-15 14:45:55 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\JAVATools\jdk1.5.0
_05\bin;.;C:\windows\system32;C:\windows;D:\tools\系统\UnxUtils\bin;D:\tools\系统\UnxUtils\usr\local\wbin;D:\JAVATools\jdk1.5.0_05\bin;C:\oracle92\bin;C:\Progra
m Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;D:\tools\系统;D:\JAVATools\ant-1.6.2\
bin
2008-5-15 14:45:55 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-80
2008-5-15 14:45:55 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 859 ms
2008-5-15 14:45:55 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2008-5-15 14:45:55 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.23
2008-5-15 14:45:55 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
- Unable to find config file. Creating new servlet engine config file: /WEB-INF/server-config.wsdd
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

……

注意,最后面三行指示了Axis 的web app已经启动了,因为在我的Tomcat中发布的应用中,没有其他应用有使用Web Service,现在出现 .wsdd 文件,肯定就是Axis的应用启动了。
我们到
F:\AXIS_Study\axis-bin-1_4\webapps\axis\WEB-INF
目录下查看,发现系统自动生成了一个attachments目录,这与启动日志中的Attachment support is disabled.是对应的。



第六步:查看一下当前Axis中布署了哪些Web Service
打开浏览器,在地址栏输入:
http://localhost/axis/servlet/AxisServlet

浏览器显示结果:
And now... Some Services

  AdminService (wsdl)
      AdminService
  Version (wsdl)
     getVersion
这说明在Axis中已经布署了两个WebService,只不过这两个WebService都是Axis自带的,第一个是管理用的WebService,第二个是查看当前Axis版本信息的WebService。
大家可以点击相应的链接“wsdl”来看一下这两个WebService的 wsdl 文件。


结语:
至此,我们已经成功地把Axis 1.4 安装到Tomcat Web 服务器上了,接下来的目标是使用Axis来发布Web Service。



第二部分: 使用Axis发布Web Service
Axis提供两种方式将Java类发布成Web Services,这两种方式分别是:即时快速自动发布 和 通过配置文件进行发布,下面我们按顺序来讲如何使用这两种方式来发布WebService

即时快速自动发布:
第一步: 编写业务类
为了发布一个Web Service,首先必须要有业务类,为了节约时间,我写一个最简单的业务类:

Java代码
1.public class SayHello{   
2.  private String name;   
3.  public String hello(){   
4.    return "Hello, axis Ver1.4 talking to you.";   
5.  }   
6.}  
public class SayHello{
  private String name;
  public String hello(){
    return "Hello, axis Ver1.4 talking to you.";
  }

注意,采用快速自动发布的Web Service的业务类不能带 package,也不能实现任何接口(Interface),因为Axis自动发布时不支持Package。


第二步:把SayHello发布为Web Service
把SayHello.java复制到 axis目录下的webapps/axis目录下,然后把文件扩展名改为:jws


第三步:访问刚发布的Web Service
打开浏览器,在地址栏里输入:
http://localhost/axis/SayHello.jws

浏览器显示结果如下:
There is a Web Service here

Click to see the WSDL

这表示Web Service已经发布成功了。我们可以点击连接“Click to see the WSDL ”来看看生成的wsdl文件:

Xml代码
1.<?xml version="1.0" encoding="UTF-8"?>   
2.<wsdl:definitions targetNamespace="http://localhost/axis/SayHello.jws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost/axis/SayHello.jws" xmlns:intf="http://localhost/axis/SayHello.jws" 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">   
3.<!--WSDL created by Apache Axis version: 1.4   
4.Built on Apr 22, 2006 (06:55:48 PDT)-->   
5.  <wsdl:message name="helloResponse">   
6.    <wsdl:part name="helloReturn" type="xsd:string"/>   
7.  </wsdl:message>   
8.  <wsdl:message name="helloRequest">   
9.  </wsdl:message>   
10.  <wsdl:portType name="SayHello">   
11.    <wsdl:operation name="hello">   
12.      <wsdl:input message="impl:helloRequest" name="helloRequest"/>   
13.      <wsdl:output message="impl:helloResponse" name="helloResponse"/>   
14.    </wsdl:operation>   
15.  </wsdl:portType>   
16. 
17.<wsdl:binding name="SayHelloSoapBinding" type="impl:SayHello">   
18.  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>   
19.  <wsdl:operation name="hello">   
20.    <wsdlsoap:operation soapAction=""/>   
21.    <wsdl:input name="helloRequest">   
22.        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>   
23.    </wsdl:input>   
24.    <wsdl:output name="helloResponse">   
25.      <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/axis/SayHello.jws" use="encoded"/>   
26.    </wsdl:output>   
27.  </wsdl:operation>   
28.</wsdl:binding>   
29. 
30.  <wsdl:service name="SayHelloService">   
31.    <wsdl:port binding="impl:SayHelloSoapBinding" name="SayHello">   
32.      <wsdlsoap:address location="http://localhost/axis/SayHello.jws"/>   
33.    </wsdl:port>   
34.  </wsdl:service>   
35.</wsdl:definitions>  
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://localhost/axis/SayHello.jws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost/axis/SayHello.jws" xmlns:intf="http://localhost/axis/SayHello.jws" 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="helloResponse">
    <wsdl:part name="helloReturn" type="xsd:string"/>
  </wsdl:message>
  <wsdl:message name="helloRequest">
  </wsdl:message>
  <wsdl:portType name="SayHello">
    <wsdl:operation name="hello">
      <wsdl:input message="impl:helloRequest" name="helloRequest"/>
      <wsdl:output message="impl:helloResponse" name="helloResponse"/>
    </wsdl:operation>
  </wsdl:portType>

<wsdl:binding name="SayHelloSoapBinding" type="impl:SayHello">
  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  <wsdl:operation name="hello">
    <wsdlsoap:operation soapAction=""/>
    <wsdl:input name="helloRequest">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
    </wsdl:input>
    <wsdl:output name="helloResponse">
      <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/axis/SayHello.jws" use="encoded"/>
    </wsdl:output>
  </wsdl:operation>
</wsdl:binding>

  <wsdl:service name="SayHelloService">
    <wsdl:port binding="impl:SayHelloSoapBinding" name="SayHello">
      <wsdlsoap:address location="http://localhost/axis/SayHello.jws"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
这个文件结构跟我们以前用IDE生成的没什么两样。

我们再访问一下这个Web Service,看看结果对不对,在浏览器地址栏输入:
http://localhost/axis/SayHello.jws?method=hello

浏览器显示服务器返回的结果:

Xml代码
1.<?xml version="1.0" encoding="UTF-8" ?>   
2.<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   
3.  <soapenv:Body>   
4.    <helloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">   
5.      <helloReturn xsi:type="xsd:string">Hello, axis Ver1.4 talking to you.</helloReturn>   
6.    </helloResponse>   
7.  </soapenv:Body>   
8.</soapenv:Envelope>  
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <helloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <helloReturn xsi:type="xsd:string">Hello, axis Ver1.4 talking to you.</helloReturn>
    </helloResponse>
  </soapenv:Body>
</soapenv:Envelope>  这里返回的是整个SOAP数据包

接头我们用Jbuilder来生成该Web Service的客户端代码:
打开Jbuilder,新建一个工程,然后增加Axis Web Service Client支持:
菜单: New --> Web Service(J2EE1.3) --> Axis Web Service Client Configuration
然后在Web Service设计器中选择“Import from URL”,其中的wsdl文件路径就输入“http://localhost/axis/SayHello.jws?wsdl”
Jbuilder就自动帮我们生成了所有配置。然后再make这个web service,这时候JBuilder自动生成了所需要的全部代码,还包括一个JUnit测试类 SayHelloServiceTestCase,为了能更直观地看到结果,我们再写一个自己的测试类:

Java代码
1.public class SayHelloTest {   
2.  public void test(){   
3.    SayHelloSoapBindingStub binding;   
4.    try {   
5.      binding = (SayHelloSoapBindingStub) new SayHelloServiceLocator().getSayHello(); //取接口   
6. 
7.    binding.setTimeout(60000); //设置超时时间   
8. 
9.    String helloMsg = binding.hello(); //调用hello方法   
10.   
11.    System.out.println(">>>>>>>>>>>>>>>>服务器返回消息:");   
12.      System.out.println( helloMsg );   
13.      System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");   
14.    }catch (javax.xml.rpc.ServiceException ex) {   
15.      if (ex.getLinkedCause() != null)   
16.        ex.getLinkedCause().printStackTrace();   
17.      System.out.println("JAX-RPC调用出错:");   
18.      ex.printStackTrace();   
19.    } catch (RemoteException ex) {     
20.      System.out.println("Web Service调用出错:");   
21.      ex.printStackTrace();   
22.  }   
23. 
24.  }   
25.    
26.  public static void main(String[] args) {   
27.    SayHelloTest sayhellotest = new SayHelloTest();   
28. 
29.    sayhellotest.test();   
30.  }   
31.}   
public class SayHelloTest {
  public void test(){
    SayHelloSoapBindingStub binding;
    try {
      binding = (SayHelloSoapBindingStub) new SayHelloServiceLocator().getSayHello(); //取接口

    binding.setTimeout(60000); //设置超时时间

    String helloMsg = binding.hello(); //调用hello方法

    System.out.println(">>>>>>>>>>>>>>>>服务器返回消息:");
      System.out.println( helloMsg );
      System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
    }catch (javax.xml.rpc.ServiceException ex) {
      if (ex.getLinkedCause() != null)
        ex.getLinkedCause().printStackTrace();
      System.out.println("JAX-RPC调用出错:");
      ex.printStackTrace();
    } catch (RemoteException ex) {  
      System.out.println("Web Service调用出错:");
      ex.printStackTrace();
  }

  }
 
  public static void main(String[] args) {
    SayHelloTest sayhellotest = new SayHelloTest();

    sayhellotest.test();
  }
}  
编译,然后执行该类,得到输出结果是:
>>>>>>>>>>>>>>>>服务器返回消息:
Hello, axis Ver1.4 talking to you.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

至此,我们通过Axis自动发布的Web Service成功了。


=======================
通过配置文件(WSDD)进行发布:

第一步:先写一个配置文件 server-config.wsdd

Xml代码
1.<?xml version="1.0" encoding="UTF-8"?>   
2.<deployment name="defaultClientConfig"   
3.xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"   
4.xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/">   
5.  <globalConfiguration name="defaultClientConfig">   
6.    <requestFlow name="RequestFlow1" type="">   
7.        <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">   
8.          <parameter name="scope" value="session"/>   
9.        </handler>   
10.        <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">   
11.            <parameter name="scope" value="request"/>   
12.            <parameter name="extension" value=".jwr"/>   
13.        </handler>   
14.      </requestFlow>   
15.    </globalConfiguration>   
16.    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>   
17.    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>   
18.    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>   
19.    <transport name="http" type="">   
20.        <requestFlow name="RequestFlow1" type="">   
21.        <handler name="Handler1" type="URLMapper"/>   
22.        <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>   
23.      </requestFlow>   
24.    </transport>   
25.    <transport name="local" type="">   
26.        <responseFlow name="ResponseFlow1" type="">   
27.            <handler name="Handler1" type="LocalResponder"/>   
28.        </responseFlow>   
29.    </transport>   
30. 
31.  <!--这里配置了一个Web Service,如果有多个Web Service,就按这种格式在下面增加即可-->   
32.  <service name="SayHello2" provider="java:RPC">   
33.    <parameter name="scope" value="Request"/>   
34.    <parameter name="className" value="SayHello"/>   
35.    <parameter name="allowedMethods" value="*"/>   
36.  </service>   
37. 
38.</deployment>  
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/">
  <globalConfiguration name="defaultClientConfig">
    <requestFlow name="RequestFlow1" type="">
        <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">
          <parameter name="scope" value="session"/>
        </handler>
        <handler name="Handler2" 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"/>
    <transport name="http" type="">
        <requestFlow name="RequestFlow1" type="">
        <handler name="Handler1" type="URLMapper"/>
        <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
      </requestFlow>
    </transport>
    <transport name="local" type="">
        <responseFlow name="ResponseFlow1" type="">
            <handler name="Handler1" type="LocalResponder"/>
        </responseFlow>
    </transport>

  <!--这里配置了一个Web Service,如果有多个Web Service,就按这种格式在下面增加即可-->
  <service name="SayHello2" provider="java:RPC">
    <parameter name="scope" value="Request"/>
    <parameter name="className" value="SayHello"/>
    <parameter name="allowedMethods" value="*"/>
  </service>

</deployment>

需要注意的通过配置文件来发布Web Service时,业务类是可以有package的,这里为了利用上面的业务类,所以就没有package

然后把该配置文件放置到WEB-INF目录下。

第二步:编译业务类
把上面写的业务编译成class文件,放到WEB-INF/classes目录下

第三步:重启Tomcat

第四步: 查看新发布的Web Service
打开浏览器,地址栏里输入: http://localhost/axis/servlet/AxisServlet
浏览器返回的结果如下:
And now... Some Services
SayHello2 (wsdl)
hello

这表明我们的新Web Service发布成功了,我们可以进一步看一下wsdl文件:

Xml代码
1.<?xml version="1.0" encoding="UTF-8"?>   
2.<wsdl:definitions targetNamespace="http://localhost/axis/services/SayHello2" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost/axis/services/SayHello2" xmlns:intf="http://localhost/axis/services/SayHello2" 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">   
3.<!--WSDL created by Apache Axis version: 1.4   
4.Built on Apr 22, 2006 (06:55:48 PDT)   
5.-->   
6.<wsdl:message name="helloRequest">   
7.</wsdl:message>   
8.<wsdl:message name="helloResponse">   
9.<wsdl:part name="helloReturn" type="soapenc:string"/>   
10.</wsdl:message>   
11.<wsdl:portType name="SayHello">   
12.<wsdl:operation name="hello">   
13.<wsdl:input message="impl:helloRequest" name="helloRequest"/>   
14.<wsdl:output message="impl:helloResponse" name="helloResponse"/>   
15.</wsdl:operation>   
16.</wsdl:portType>   
17.<wsdl:binding name="SayHello2SoapBinding" type="impl:SayHello">   
18.<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>   
19.<wsdl:operation name="hello">   
20.<wsdlsoap:operation soapAction=""/>   
21.<wsdl:input name="helloRequest">   
22.<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>   
23.</wsdl:input>   
24.<wsdl:output name="helloResponse">   
25.<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/axis/services/SayHello2" use="encoded"/>   
26.</wsdl:output>   
27.</wsdl:operation>   
28.</wsdl:binding>   
29. 
30.<wsdl:service name="SayHelloService">   
31.<wsdl:port binding="impl:SayHello2SoapBinding" name="SayHello2">   
32.<wsdlsoap:address location="http://localhost/axis/services/SayHello2"/>   
33.</wsdl:port>   
34.</wsdl:service>   
35.</wsdl:definitions>  
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://localhost/axis/services/SayHello2" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost/axis/services/SayHello2" xmlns:intf="http://localhost/axis/services/SayHello2" 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="helloRequest">
</wsdl:message>
<wsdl:message name="helloResponse">
<wsdl:part name="helloReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:portType name="SayHello">
<wsdl:operation name="hello">
<wsdl:input message="impl:helloRequest" name="helloRequest"/>
<wsdl:output message="impl:helloResponse" name="helloResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SayHello2SoapBinding" type="impl:SayHello">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="hello">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="helloRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
</wsdl:input>
<wsdl:output name="helloResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/axis/services/SayHello2" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

<wsdl:service name="SayHelloService">
<wsdl:port binding="impl:SayHello2SoapBinding" name="SayHello2">
<wsdlsoap:address location="http://localhost/axis/services/SayHello2"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

第五步:写测试客户端
在Jbuilder中,刚才的工程里增加一个Web Service客户端,还是在Web Service设计器中选择“Import from URL”,其中的wsdl文件路径就输入“http://localhost/axis/services/SayHello2?wsdl”,然后make这个web service module。同样的,我们也再写一个自己的测试类:

Java代码
1.public class SayHello2Test {   
2.    public void test(){   
3.        SayHello2SoapBindingStub binding;   
4.        try {   
5.            binding = (SayHello2SoapBindingStub) new SayHello2ServiceLocator().getSayHello(); //取接口   
6. 
7.            binding.setTimeout(60000); //设置超时时间   
8. 
9.            String helloMsg = binding.hello(); //调用hello方法   
10. 
11.            System.out.println(">>>>>>>>>>>>>>>>服务器返回消息:");   
12.            System.out.println( helloMsg );   
13.            System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");   
14.        }catch (javax.xml.rpc.ServiceException ex) {   
15.            if (ex.getLinkedCause() != null)   
16.                ex.getLinkedCause().printStackTrace();   
17.            System.out.println("JAX-RPC调用出错:");   
18.            ex.printStackTrace();   
19.        } catch (RemoteException ex) {   
20.            System.out.println("Web Service调用出错:");   
21.            ex.printStackTrace();   
22.        }   
23. 
24.    }   
25. 
26.    public static void main(String[] args) {   
27.        SayHello2Test sayhellotest = new SayHello2Test();   
28. 
29.        sayhellotest.test();   
30.    }   
31.}  
public class SayHello2Test {
    public void test(){
        SayHello2SoapBindingStub binding;
        try {
            binding = (SayHello2SoapBindingStub) new SayHello2ServiceLocator().getSayHello(); //取接口

            binding.setTimeout(60000); //设置超时时间

            String helloMsg = binding.hello(); //调用hello方法

            System.out.println(">>>>>>>>>>>>>>>>服务器返回消息:");
            System.out.println( helloMsg );
            System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
        }catch (javax.xml.rpc.ServiceException ex) {
            if (ex.getLinkedCause() != null)
                ex.getLinkedCause().printStackTrace();
            System.out.println("JAX-RPC调用出错:");
            ex.printStackTrace();
        } catch (RemoteException ex) {
            System.out.println("Web Service调用出错:");
            ex.printStackTrace();
        }

    }

    public static void main(String[] args) {
        SayHello2Test sayhellotest = new SayHello2Test();

        sayhellotest.test();
    }
}


运行这个测试类,得到的输出结果是:
>>>>>>>>>>>>>>>>服务器返回消息:
你好,现在是 axis Ver1.4 在与你对话。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

OK, 一切尽在掌握中,哈哈!


好了,今天课程到此结束,下次再见。



分享到:
评论

相关推荐

    Delphi+Web前端开发教程基于TMS+WEB+Core框架.pdf

    **Delphi Web前端开发教程——基于TMS WEB Core框架** Delphi Web前端开发教程是针对想要使用TMS WEB Core框架创建Web应用程序的开发者,无论你是初学者还是高级开发者,本教程都提供了丰富的学习资源。TMS WEB ...

    WebApi和访问WebApi两个项目

    WebApi和访问WebApi是开发过程中常见的两个概念,它们在构建分布式系统和提供网络服务时起着关键作用。本文将深入探讨这两个项目及其关联技术,包括WebApi的使用和通过HttpWebRequest类进行WebApi调用。 WebApi是...

    C# WebApi实战项目Demo,便于快速学习WEBAPI

    C# WebApi实战项目Demo,便于快速学习WEBAPI, WebAPI: 提供给不同客户端(跨平台客户端)调用网页的应用程序编程接口。 Web API,一般指基于HTTP协议的编程接口,接口一般定义为HTTP或HTTPS:请求方法、请求路径、...

    嵌入式web服务器:appweb

    AppWeb是一个功能丰富的嵌入式Web服务器,它比 boa(另一个知名的嵌入式Web服务器)提供了更广泛的支持。AppWeb的核心特性包括: 1. **轻量级架构**:AppWeb的设计目标是小体积和低内存占用,使其适合在资源有限的...

    web工具箱 web工具箱

    web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱web工具箱...

    使用matlab web server直接进行web开发

    MATLAB Web Server是一种强大的工具,它使得工程人员能够利用MATLAB和Simulink的应用程序构建Web应用程序,并通过互联网发布这些应用。这个平台的核心优势在于它允许用户通过标准的HTML文档和表单与MATLAB代码进行...

    大华摄像头_WEB_DEMO_基于webplugin插件.zip

    标题 "大华摄像头_WEB_DEMO_基于webplugin插件.zip" 暗示这是一个关于大华品牌的网络摄像头的Web演示项目,它依赖于一个名为"webplugin"的浏览器插件来实现。这个压缩包可能包含了运行该Web DEMO所需的所有文件。 ...

    C#web开发者指南教程PDF(含源代码),很适合入门学习C#web制作web应用程序。附带源代码。

    《C# Web开发者指南教程》是一本专门为初学者设计的教育资源,旨在帮助读者掌握使用C#语言进行Web应用程序开发的基本技能。这本书包含了丰富的理论知识和实际操作指导,结合了源代码,使得学习过程更具实践性。 C#...

    C#Web应用程序入门经典

    其中前两章讲述了WEB环境和web开发的基础切识,在随后的11章中从理论和实践两个方而讲解了web应用程序的创建、测试、调试和部署等环节,如服务器控件、数探访问、数据绑定、Asp.NET状态管理、XML与web开发、web应用...

    VMware vSphere Web Client操作篇

    VMware vSphere Web Client 操作篇 VMware vSphere Web Client 是 VMware vSphere 的一个主要组件,提供了基于 Web 的界面,用于管理和监控 VMware vSphere 环境。下面我们将详细介绍 VMware vSphere Web Client 的...

    WebApi和访问WebApi两个项目(更新过)

    在本项目中,我们有两个主要部分:WebApi项目和访问WebApi的项目。这两个项目的协同工作使得数据交换和功能调用更为高效。 首先,让我们深入理解WebApi项目。WebApi项目的核心是Controller,它负责处理来自客户端的...

    IEWebControl.exe

    IEWebControl.exe是Microsoft开发的一个ActiveX控件,它允许开发者在Windows应用程序中集成Web浏览功能。这个控件基于Internet Explorer的核心,使得用户可以在桌面应用中直接浏览网页,而无需打开单独的浏览器窗口...

    web前端网页设计作品web期末大作业web前端作业网页制作代码web大作业制作网页代码

    本资源就可以为你解决你所面临的这些问题,原始HTML+CSS+JS页面设计, web大学生网页设计作业源码,这是一个不错的网页制作资源合集,画面精美,非常适合初学者学习使用。 多套(HTML+CSS+JS)网页设计的学生期末大...

    c# WebApi Winform托管

    在IT领域,C#是一种广泛使用的编程语言,尤其在创建桌面应用程序和Web服务方面。本示例中的"WebApi Winform托管"是一个结合了C#的Windows Forms(Winform)和ASP.NET Web API的技术实现,它允许在Winform应用内部...

    【Web网页设计制作-毕业设计期末大作业源码】前端设计师web简历html模板下载5493.zip

    Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计...

    python web开发实录源代码

    Python Web开发是现代互联网应用构建的重要技术之一,它利用Python语言的强大功能和丰富的库资源,结合Web框架,如Django、Flask等,快速构建高效、可扩展的Web应用程序。"Python Web开发实录源代码"是针对这一主题...

    Web Developer 2.0.2 简体中文版

    Web Developer 是一款能在浏览器中添加各种Web开发功能的深受欢迎的工具。自 Firefox 57.0 发布以来,以往旧式的扩展已不兼容,因此,Web Developer 的原作者发布了新版本,以支持新的 Web Extension 扩展技术,但...

    白帽子讲Web安全.pdf百度云分享+Web前端黑客技术揭秘.pdf

    《白帽子讲Web安全》与《Web前端黑客技术揭秘》这两本书是IT行业中关于网络安全,特别是Web安全领域的经典著作。它们深入浅出地探讨了Web安全的重要性和实践方法,为读者提供了丰富的知识。 《白帽子讲Web安全》一...

    webapi寄宿于winform

    【标题】"WebAPI寄宿于WinForm"的实现是一个技术方案,它允许开发者在Windows Forms应用程序中直接运行和控制WebAPI服务,而无需依赖IIS(Internet Information Services)这样的传统Web服务器。这种方式的优点在于...

    C# WebAPI示例

    C# WebAPI是一种基于.NET Framework或.NET Core的轻量级HTTP服务框架,它允许开发者创建RESTful服务,这些服务可以被各种...学习并掌握WebAPI,可以帮助开发者构建高效、可扩展的API服务,满足现代Web应用的需求。

Global site tag (gtag.js) - Google Analytics