`
yydcj
  • 浏览: 61617 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Axis1.4编写web服务

阅读更多

摘自:http://www.blogjava.net/pdw2009/archive/2007/10/25/155889.html

axis常见问题及解决办法参考这里
http://www.ibm.com/developerworks/cn/webservices/ws-axisfaq/
根据wsdl开成webservice的java客户 例子:
1、执行以下命令生成客户端代码
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl   
该命令的参数格式
从最简单的开始 ,-uri 指定wsdl文件
> WSDL2Java -uri currencyConvert.wsdl
-d 使用不同的data binding方法
> WSDL2Java -uri currencyConvert.wsdl -d xmlbeans
-a 生成异步的方法
> WSDL2Java -uri currencyConvert.wsdl -a
-t 生成测试case
> WSDL2Java -uri currencyConvert.wsdl -t
稍微复杂一些的,-p可以指定生成的package,-o指定生成的路径,-ss生成服务端代码
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src -ss -sd -g -p foo.bat2、生成代码的使用
package localhost.axis.pdw_jws;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
public class clientTest {
public static void main(String[] args) throws ServiceException, RemoteException {
PdwService service=new PdwServiceLocator();
Pdw p=service.getpdw();
int count=p.add(3,4);
System.out.println(count);
System.out.println(p.sub(4,6));
}
} 开发环境地的建立和以往一样,把例子中的classes的文件打包成jar,放到开发环境,就可能了。
这是我3年前写的,在myeclipse中进行axis开发的文件
http://www.54bk.com/user1/6324/archives/2005/22197.html
最近复习写的代码
server-config.xml 代码如下:
<?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="adminPassword" value="admin"/>
<parameter name="attachments.Directory" value="D:\resin-pro-3.1.0\webapps\axis\WEB-INF\attachments"/>
<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="axis.sendMinimizedElements" value="true"/>
<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="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<transport name="local">
<responseFlow>
   <handler type="LocalResponder"/>
</responseFlow>
</transport>
<transport name="http">
<requestFlow>
   <handler type="URLMapper"/>
   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<handler name="soapmonitor"
    type="java:org.apache.axis.handlers.SOAPMonitorHandler">
    <parameter name="wsdlURL"
      value="/axis/SOAPMonitorService-impl.wsdl"/>
    <parameter name="namespace"
      value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/ >
    <parameter name="serviceName" value="SOAPMonitorService"/>
    <parameter name="portName" value="Demo"/>
</handler>
<handler name="logHandler" type="java:webservices.handlers.LogHandler">
     <parameter name="filename" value="c:\\axislog.txt"/>
</handler>
<handler name="authorHandler" type="java:webservices.handlers.AuthenticationHandler"/>
<service name="SOAPMonitorService" provider="java:RPC">
    <parameter name="allowedMethods" value="publishMessage"/>
    <parameter name="className"
      value="org.apache.axis.monitor.SOAPMonitorService"/>
    <parameter name="scope" value="Application"/>
</service>  
<service name="Version" provider="java:RPC">
      <parameter name="allowedMethods" value="getVersion"/>
      <parameter name="className" value="org.apache.axis.Version"/>
</service>
<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="MyServices" provider="java:RPC">
      <parameter name="allowedMethods" value="*"/>
      <parameter name="allowedRoles" value="peidw"/><!-- 验证规则 -->
      <parameter name="className" value="webservices.MyServices"/>
      <beanMapping languageSpecificType="java:domain.Book" qname="ns:Book" xmlns:ns="urn:BeanService" />
       <beanMapping languageSpecificType="java:domain.Student" qname="ns:Student" xmlns:ns="urn:StudentService" />
             <requestFlow>
        <handler type="logHandler"/>
          </requestFlow>
</service>
</deployment>myservice.java
package webservices;
import domain.Book;
import domain.Student;
import java.util.*;
public class MyServices {
       static Map map=new HashMap();
    static{
        map.put("125-6922-10", new Book("Structs程序设计","孙卫琴","125-6922-10"));
        map.put("125-6922-11", new Book("Think in Java","孙卫琴","125-6922-11"));
        map.put("125-6922-12", new Book("C++程序高驻地","小张","125-6922-12"));
        map.put("125-6912-59", new Book("CSS实践手册","小李","125-6912-59"));
        map.put("125-6992-55", new Book("XML入门到精通","小裴","125-6992-55"));
    }        public Book getBookByIsbn(String isbn){
        Book result=null;
        if(map.containsKey(isbn)){
            return (Book) map.get(isbn);
        }
        return result;
    }      public List getBookList(){
        List result=null;
        Set set=map.entrySet();
        result=new ArrayList();
        result.addAll(set);
        return result;
    }     public Book[] getBookArray(){
        List tmp_list=getBookList();
        return (Book[]) tmp_list.toArray();
    }       public Map getAllBookMap(){
        return map;
    }    public Student getStudent(){
        return new Student("小裴","kkk@tom.com "," 广西合浦西场裴屋村");
    }      
}两个handler
package webservices.handlers;
import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.commons.lang.*;
import java.io.*;
import java.util.*;
public class LogHandler extends BasicHandler{
    public void invoke(MessageContext arg0) throws AxisFault {
        Handler handler=arg0.getService();
        String logfilename=(String)this.getOption("filename");
        if(StringUtils.isEmpty(logfilename)){
            throw new AxisFault("日志文件不能为空","",null,null);
        }
        try {
            FileOutputStream fos=new FileOutputStream(logfilename,true);
            PrintWriter pw=new PrintWriter(fos);
            Date date=new Date();
            arg0.getMessage().writeTo(System.out);
            String result="---";
            pw.println(result);
            pw.close();
        } catch (Exception e) {
      e.printStackTrace();
        }
    }   
}
package webservices.handlers;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.security.SecurityProvider;
import org.apache.axis.security.simple.SimpleSecurityProvider;
import org.apache.axis.session.Session;
public class AuthenticationHandler extends BasicHandler{
    public void invoke(MessageContext arg0) throws AxisFault {
        SecurityProvider provider = (SecurityProvider)arg0.getProperty("securityProvider");
        if(provider==null){
            provider= new SimpleSecurityProvider();
            arg0.setProperty("securityProvider", provider);   }
        if(provider!=null){
            String userId=arg0.getUsername();
            String password=arg0.getPassword();
            //对用户进行认证,如果authUser==null,表示没有通过认证,抛出Server.Unauthenticated异常。
            Session session=arg0.getSession();
            System.out.println("----------===xx----------------");
            org.apache.axis.security.AuthenticatedUser authUser
            = provider.authenticate(arg0);
            if(authUser==null)   
                throw new AxisFault("Server.Unauthenticated","用户验证异常", null,null);
            //用户通过认证,把用户的设置成认证了的用户。
            arg0.setProperty("authenticatedUser", authUser);
        }       
    }
    }
客户端例子
package test;
import wsclient.myservices.*;
import java.net.URL;
import java.util.*;
import javax.xml.namespace.QName;
import org.apache.axis.client.*;
import org.apache.wsif.*;
import org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl;
public class MyServiceExe {
       public static void handlerCallDemo()throws Exception{
        MyServicesService ms=new MyServicesServiceLocator();
        MyServices_PortType msp=ms.getMyServices();
        Book book=msp.getBookByIsbn("125-6922-10");
        System.out.println(book.getAuthor()+"-"+book.getBookname()+"-"+book.getIsbn());
        Map map=msp.getAllBookMap();
        Set keyset=map.keySet();
        Iterator it=keyset.iterator();
        String tmp=null;
        while(it.hasNext()){
            tmp=(String)it.next();
            System.out.println(tmp);
        }
    }
       public static void dynamicCall()throws Exception{
        String endpoint_1="http://localhost:8000/axis/services/Version?wsdl ";
        Service service = new Service();
        Call call=(Call)service.createCall();
        call.setOperationName(new QName(endpoint_1,"getVersion "));
        call.setTargetEndpointAddress(new URL(endpoint_1));
        String result=(String)call.invoke(new Object[]{});
        System.out.println("result="+result);
    }
        public static void wsifCall()throws Exception {
        String url="http://localhost:8000/axis/services/Version?wsdl ";
        WSIFServiceFactory factory=WSIFServiceFactory.newInstance();
        //如果调用的方法需要进行用户/密码校验,需执行下面代码
        //AuthenticatingProxyWSDLLocatorImpl awsli=new AuthenticatingProxyWSDLLocatorImpl(url,"gaolong1","19831001"); //验证连接
        WSIFService service=factory.getService(url,"http://localhost:8000/axis/services/Version","VersionService","http://localhost:8000/axis/services/Version","Version ");
        WSIFPort port = service.getPort();
        WSIFOperation operation = port.createOperation("getVersion","getVersionRequest",null);//根据给定的操作名称参 数operationName,输入元素名称inputName,输出元素名称
        WSIFMessage input = operation.createOutputMessage();//设置输入参数
        WSIFMessage output = operation.createOutputMessage();//设置输出参数
        WSIFMessage fault = operation.createFaultMessage(); //异常信息
        operation.executeRequestResponseOperation(input,output,fault); //执行请求
                System.out.println(output.getObjectPart("getVersionReturn"));       
    }
    public static void main(String[] args)throws Exception{
        handlerCallDemo();
        dynamicCall();
        wsifCall();
    }
}

分享到:
评论

相关推荐

    axis1.4完整包下载

    - **创建Web服务**:通过编写Java类并使用特定的注解,Axis1.4可以自动将其暴露为SOAP服务。 - **消费Web服务**:使用Axis1.4提供的客户端工具,可以自动生成Java客户端代理类,方便调用远程SOAP服务。 - **处理WSDL...

    webservice axis1.4服务实例

    Axis1.4是Apache Axis的一个版本,它是一个流行的开源工具,用于实现和部署Java Web服务。Apache Axis1.4支持SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language),这两种技术是构建...

    axis1.4jar包以及WSDL和服务端代码互转方法

    Axis1.4是Apache组织提供的一款基于Java的Web服务框架,它允许开发者轻松地创建、发布和调用Web服务。本文将深入探讨如何使用Axis1.4.jar包以及Eclipse IDE来实现WSDL(Web Service Description Language)和服务端...

    axis1.4及webService开发教程

    Axis1.4是Apache软件基金会提供的一个开源工具,专门用于开发和部署Web服务。本教程将详细讲解如何使用Axis1.4进行Web服务的开发,包括创建服务端和客户端。 首先,我们需要了解Web服务的基本概念。Web服务是通过...

    apache axis1.4 官网备份

    Apache Axis1.4是历史悠久的一款开源SOAP(Simple Object Access Protocol)服务器和客户端库,它主要用于构建Web服务。这款工具在2003年发布,是Apache软件基金会的一部分,旨在简化XML-RPC和SOAP的实现。由于其...

    springboot使用axis1.4的demo

    在本文中,我们将深入探讨如何在Spring Boot项目中集成并使用Axis1.4来发布Web服务。Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP ...

    webservice axis1.4 开发资料

    Axis1.4是Apache软件基金会提供的一个开源Web服务框架,主要用于构建和部署SOAP(Simple Object Access Protocol)服务。在本文中,我们将详细探讨Axis1.4在Web服务开发中的关键知识点。 1. **Axis1.4框架**:Axis...

    apache axis1.4实例

    Apache Axis1.4是Apache软件基金会开发的一个开源Web服务框架,专门用于构建和部署Web服务。这个框架在2004年发布,虽然现在已经有些老旧,但因其稳定性、广泛支持和丰富的功能,仍然在很多项目中被使用。本文将深入...

    Axis1.4快速发布服务以及客服端详解(根据wsdl)

    Apache Axis1.4是一款开源的Web服务工具包,它允许开发者轻松地在Java平台上创建和部署Web服务。本教程将深入讲解如何使用Axis1.4来快速发布Web服务以及构建对应的客户端,这一切都将基于WSDL(Web服务描述语言)...

    Springboot集成axis1.4的demo

    当我们需要在Spring Boot项目中集成旧版的 Axis1.4 来发布Web服务时,这通常涉及到对传统SOAP(简单对象访问协议)服务的支持。以下将详细讲解如何在Spring Boot应用中集成Axis1.4以及使用wsdd文件发布Web服务。 ...

    WebService axis1.4接口服务序列/反序列复杂项目实例

    Axis1.4是Apache软件基金会开发的一个开源Web服务框架,它主要用于实现SOAP(Simple Object Access Protocol)服务。在这个"WebService Axis1.4接口服务序列/反序列复杂项目实例"中,我们将深入探讨如何在 Axis1.4 ...

    【java项目整合Axis1.4webservice搭建实例】服务端代码

    在Java开发中,Axis1.4是一个常用的开源工具,用于构建和部署Web服务。本实例主要探讨如何将Axis1.4与Java项目整合,搭建Web服务的服务端。下面我们将详细阐述Axis1.4、Web服务以及如何在服务端进行设置。 一、 ...

    【java项目整合Axis1.4webservice搭建实例】客户端代码

    在Java开发中, Axis1.4 是一个广泛使用的开源框架,用于构建和部署Web服务。本文将深入探讨如何使用Axis1.4与Java项目整合,搭建Web服务客户端,并通过具体的客户端代码实例进行详解。 首先,我们需要理解Web服务...

    使用Eclipse的Axis1.4插件开发Web Service及客户端

    【使用Eclipse的Axis1.4插件开发Web Service及客户端】 在Eclipse JEE 3.3版本中,开发Web Service和客户端程序变得相对简单,因为该版本已经集成了Axis1.4插件,无需额外安装。 Axis是一个开放源码的Web Service...

    axis1.4开发webservice详细实例

    总结,使用Axis1.4开发Web服务涉及到的主要步骤包括创建服务类、生成WSDL、打包服务、部署服务以及编写和运行客户端。了解并掌握这些步骤,有助于开发者快速构建基于Java的Web服务应用程序。同时,注意保持代码的...

    axis1.4资源

    Axis1.4是Apache软件基金会开发的一个开源Web服务框架,主要用Java语言编写,它允许开发者将Java类作为Web服务发布,并能处理来自其他应用程序的Web服务请求。这个框架是基于早期的Axis版本,即Axis1.x系列,而Axis...

    axis1.4学习示例(详细步骤说明)

    Axis1.4 是一个开源的 SOAP(简单对象访问协议)服务框架,用于构建和部署 Web 服务。这个框架允许开发者将 Java 类转换为 Web 服务,或者调用其他 Web 服务。在本示例中,我们将详细探讨如何使用 Axis1.4 创建并...

    Springboot,axis1.4的demo

    2. **创建 Web 服务**:在 Axis1.4 中,你可以通过编写 Java 类并使用特定的注解(如 `@WebService`)来定义 Web 服务。这个类将包含你的业务逻辑,并可以通过 SOAP 调用来访问。 3. **配置 SpringBoot**:为了使 ...

    axis1.4 部署webservice说明

    Axis1.4是Apache软件基金会开发的一个开源Java框架,用于创建和部署Web服务。这个框架在Web服务领域中扮演着重要角色,特别是在早期的Web服务实现中。标题和描述提到的知识点主要集中在如何使用Axis1.4来部署Web服务...

    axis1.4部署webSevice项目测试(已有所相关的jar包)+开发指南+源码+部署相关配置wsdd文件,内有说明

    Apache Axis1.4是Apache软件基金会开发的一款开源Web服务框架,它允许开发者快速、轻松地创建和部署Web服务。本文将详细探讨Axis1.4的部署、Web服务开发以及相关配置文件的使用。 首先,让我们了解如何使用Axis1.4...

Global site tag (gtag.js) - Google Analytics