AXIS简单实现入门

原创 2004年09月15日 12:01:00

http://localhost/services

http://localhost/servlet/AdminServlet

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

l          http://ws.apache.org/axis

l         下载解压*.jarlib

l         修改web.xml如下:

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

    "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

<web-app>

  <display-name>Apache-Axis</display-name>

  <servlet>

    <servlet-name>AxisServlet</servlet-name>

    <display-name>Apache-Axis Servlet</display-name>

    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>

  </servlet>

  <servlet>

    <servlet-name>AdminServlet</servlet-name>

    <display-name>Axis Admin Servlet</display-name>

    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>

    <load-on-startup>100</load-on-startup>

  </servlet>

  <servlet>

    <servlet-name>SOAPMonitorService</servlet-name>

    <display-name>SOAPMonitorService</display-name>

    <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>

    <init-param>

      <param-name>SOAPMonitorPort</param-name>

      <param-value>8100</param-value>

    </init-param>

    <load-on-startup>100</load-on-startup>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name>

    <url-pattern>/servlet/AxisServlet</url-pattern>

  </servlet-mapping>

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name><url-pattern>*.jws</url-pattern>

  </servlet-mapping>

 

  <servlet-mapping>

    <servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern>

  </servlet-mapping>

 

  <servlet-mapping>

    <servlet-name>SOAPMonitorService</servlet-name>

    <url-pattern>/SOAPMonitor</url-pattern>

  </servlet-mapping>

 

 <!-- uncomment this if you want the admin servlet -->

  <servlet-mapping>

    <servlet-name>AdminServlet</servlet-name>

    <url-pattern>/servlet/AdminServlet</url-pattern>

  </servlet-mapping>

 

    <!-- currently the W3C havent settled on a media type for WSDL;

    http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft

    for now we go with the basic 'it's XML' response -->

  <mime-mapping>

    <extension>wsdl</extension>

     <mime-type>text/xml</mime-type>

  </mime-mapping>

 

 

  <mime-mapping>

    <extension>xsd</extension>

    <mime-type>text/xml</mime-type>

  </mime-mapping>

 

  <welcome-file-list id="WelcomeFileList">

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>index.jws</welcome-file>

  </welcome-file-list>

 

l         直接把所要发布的接口,以*.java 放入*.jwsrootok

 

View the list of deployed Web services

http://localhost/servlet/AxisServlet

 

*.jws访问进行url监控时我们可以很好的查看对方服务器的内部地址:

http://localhost/UNEXIST.jws 这样只能返回http 404错误

 

http://localhost/UNEXIST.jws?wsdl

AXIS error

Sorry, something seems to have gone wrong... here are the details:

Fault - ; nested exception is:

         java.io.FileNotFoundException: h:/WSDL/defaultroot/xxx.jws (The system cannot find the file specified)

AxisFault

 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException

 faultSubcode:

 faultString: java.io.FileNotFoundException: h:/WSDL/defaultroot/xxx.jws (The system cannot find the file specified)

 faultActor:

 faultNode:

 faultDetail:

 

l         实际编写Test.jws root目录

public class Test{

        public String getMsg(){

                System.out.println("happen act in getMsg()");

                return "demo";

        }

        public void setMsg(String msg){

                //--operation here

        }

}

 

while compiling:  h:/WSDL/defaultroot/WEB-INF/jwsClasses/Test.java

l         编写*.jws注意问题: 不能implement XXInterface,不要写package

 

看到效果:

http://localhost/Test.jws

表示正常,关键要WSDL能正常解析出来http://localhost/Test.jws?wsdl

 

There is a Web Service here Click to see the WSDL

 

到此步应该成功,在开始配置时有非常问题,发生在Web.xml与解析WSDL的相关正确经过几次三番成功用的是

JDK1.4+Tomcat4/WebLogic 7+Win

JDK1.3+WebLogic7+Unix tru64 5.1a

问题:

WebLogic7.1有可以,有机不行,一样建domain,总有时就不行

WebLogic7.1Unixdomain一样copy to DefaultWebApp 就是有时不行,

 

根据WebServices调用之几种方法:

l         http://localhost/Test.jws?method=getMsg

l         http://localhost/Test.jws?method=setMsg&msg=hello

返回整个SOAP包与结果

 

l         JBuilder8->New->Web Services->Import a Web Service:

Import A Web Service With Axis:

WSDL URL: http://localhost/Test.jws?wsdl

package: com.xxxx

生成如下类:

TestService.java

TestServiceLocator.java

TestServiceTestCase.java

Test.java

TestSoapBindingStub.java

TestSoapBindingImpl.java

还有:deploy.wsdd,undeploy.wsdd

 

调用:

TestService ts=new TestServiceLocator();

((TestSoapBindingStub)ts.get....).get..

 

该类为调用基于Microsoft SOAP的解决VC传指针引用返回内容Call远程方法后可调用StringHolder.value 取得值  javax.xml.rpc.holders.StringHolder;

 

 

l         第二种方式,用WSDL2JAVA生成本地调用

//classpath包含6jar文件

wsdl2java http://localhost/Test.jws?wsdl

 

F:/axis-1_1> set classpath=f:axis-ant.jar;f:axis.jar;f:commons-discovery.jar;f:co

mmons-logging.jar;f:jaxrpc.jar;f:log4j-1.2.8.jar;f:saaj.jar;f:wsdl4j.jar;

 

d:/j2sdk1.4.0/bin/java org.apache.axis.wsdl.WSDL2Java http://localho

st/Test.jws?wsdl

 

生成四个文件

TestService.java TestServiceLocator.java Test.java TestSoapBindingStub.java

 

TestService test=new TestServiceLocator();

TestSoapBindingStub bind=(TestSoapBindingStub) test.getTestSoapPort();

 

后与jbuilder做本地调用

 

 

l         第三种方式,直接下载www.apache.org/soap jar包放入classpath中,编写调用代码:

import java.net.URL;

import java.util.Vector;

import java.util.Arrays;

 

import org.apache.soap.Constants;

import org.apache.soap.SOAPException;

import org.apache.soap.Envelope;

import org.apache.soap.Fault;

import org.apache.soap.rpc.Call;

import org.apache.soap.rpc.Response;

import org.apache.soap.rpc.Parameter;

 

public class HelloWorldClient {

  public static void main(String args[]) {

    String url = "http://localhost/Test.jws";

    String remoteMethod = "setMsg";

 

       String callers[]=new String[]{"Hello"};

    try {

      Call call = new Call();

      call.setMethodName(remoteMethod);

     

      Parameter params[]=new Parameter[callers.length];

      for(int i=0;i<params.length;i++){

          params[i]=new Parameter("callers"+i,callers[i].getClass(),callers[i],

                                             Constants.NS_URI_SOAP_ENC);

      }

 

      Vector vect=new Vector(Arrays.asList(params));     call.setParams(vect);

      Response resp = call.invoke(new URL(url), "");

 

      if (resp.generatedFault()) {

        Fault fault = resp.getFault();

        System.out.println(": Call to " + remoteMethod + " returned a fault!");

        System.out.println("  Fault code: " + fault.getFaultCode());

        System.out.println("  Fault string: " + fault.getFaultString());

      } else {

        if (resp.getReturnValue() != null) {

          Object result = resp.getReturnValue().getValue();

          System.out.println("return" + ": " + result);

        }

      }

    } catch (Exception exception) {

      System.err.println("Error, caught exception: " + exception);

    }

  }

}

Axis 1.X 入门实例

 AXIS是开源的WS运行引擎,是SOAP协议的一个实现。来源于Apache的一个开源项目Apache SOAP.分为1.X 和2.X.两个的体系结构和使用上有较大的区别。 1。X更加稳定一些。它提供...
  • sunhxp
  • sunhxp
  • 2010年11月07日 21:45
  • 1915

AXIS 入门

转自:http://deltaj.javaeye.com/blog/284387请尊重deltaj的工作成果,转载请注明出处 axis2创建web service(一)                ...
  • liguocai2005
  • liguocai2005
  • 2009年08月02日 21:56
  • 1506

Axis实践之Axis入门

第一部分: 安装Axis 第一步: 下载Axis 从Apache网站下载Axis发布包: http://ws.apache.org/axis/ 我下载的是 Axis 1.4 Final 版 第二步: ...
  • dengjianqiang001
  • dengjianqiang001
  • 2009年02月25日 14:19
  • 199

axis入门

axis入门很好的例子         http://www.iteye.com/topic/1119880
  • eminem2011
  • eminem2011
  • 2012年04月26日 16:11
  • 355

AXIS入门

怎么安装Axis 1)安装JDK1.3版或以上我的是D:/j2sdk1.4.22)安装TOMCAT5.0不一定要求是TOMCAT,只要是支持servlet 2.2 API的就可以;我的是D:/Tomc...
  • GodSpeed513
  • GodSpeed513
  • 2008年08月18日 17:12
  • 481

SOAP与AXIS2入门教程(附带实例)

最近项目需要用到SOAP以及AXIS2的知识,在学习之余,将第一天学到的内容整理了一下,一来做为笔记做个记录,二来如果有需要的,可以做为参考,今天主要是完成了一下功能,通过一个SOAP请求消息(可以自...
  • daryl715
  • daryl715
  • 2007年05月09日 20:35
  • 12425

Axis入门(4)

发布自己的WEB services服务1)建立自己的JAVA文件如下:public class HelloService{?public String echoString(String name)?...
  • hongbo781202
  • hongbo781202
  • 2004年08月04日 16:52
  • 2057

Axis 简单入门实例

下面记录是我的一个Axis的简单入门实例,不足之处,请 勿见怪 Step1:新建一个WebProject,如我的WebProject就是AxisStudy Step2:下载对就应的axis...
  • q1w2e3a_4s5d6z
  • q1w2e3a_4s5d6z
  • 2013年10月05日 19:52
  • 413

Axis入门(1)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 08:31
  • 106

Axis入门(2)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 08:32
  • 70
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AXIS简单实现入门
举报原因:
原因补充:

(最多只允许输入30个字)