WSDL2Java操作指南

简介: 1. 安装JDK1.5, 配置系统环境变量:     下载安装JDK后, 设置环境变量:     JAVA_HOME=C:\Program Files\Java\jdk1.5.0_02     Path=%Path%;%JAVA_HOME%\bin(这里的%Path%指你系统已经有的一系列配置)     CLASSPATH=%JAVA_HOME%\lib  2. 下载axis,
1. 安装JDK1.5, 配置系统环境变量: 
   下载安装JDK后, 设置环境变量: 
   JAVA_HOME=C:\Program Files\Java\jdk1.5.0_02 
   Path=%Path%;%JAVA_HOME%\bin(这里的%Path%指你系统已经有的一系列配置) 
   CLASSPATH=%JAVA_HOME%\lib 
2. 下载axis, 配置系统环境变量: 
   下载axis后,配置如下: 
   AXIS_LIB=F:\Java\axis\axis-1_4\lib 
   然后在CLASSPATH里添加axis的8个jar: 
   CLASSPATH=%JAVA_HOME%\lib; 
%AXIS_LIB%\axis.jar; 
%AXIS_LIB%\axis-ant.jar; 
%AXIS_LIB%\commons-discovery-0.2.jar; 
%AXIS_LIB%\commons-logging-1.0.4.jar; 
%AXIS_LIB%\jaxrpc.jar; 
%AXIS_LIB%\log4j-1.2.8.jar; 
%AXIS_LIB%\saaj.jar; 
%AXIS_LIB%\wsdl4j-1.5.1.jar; 
   
3. 添加附加的3个jar: 
   自己去获取activation.jar, mail.jar, xerces.jar, 放到AXIS_LIB所指的目录下, 
然后在CLASSPATH里添加: 
   CLASSPATH=%JAVA_HOME%\lib; 
%AXIS_LIB%\axis.jar; 
%AXIS_LIB%\axis-ant.jar; 
%AXIS_LIB%\commons-discovery-0.2.jar; 
%AXIS_LIB%\commons-logging-1.0.4.jar; 
%AXIS_LIB%\jaxrpc.jar; 
%AXIS_LIB%\log4j-1.2.8.jar; 
%AXIS_LIB%\saaj.jar; 
%AXIS_LIB%\wsdl4j-1.5.1.jar; 
%AXIS_LIB%\activation.jar; 
%AXIS_LIB%\mail.jar; 
%AXIS_LIB%\xerces.jar 
4. 获取或者自己编写wsdl文件 
5. 生成webservice服务器端的代码: 
   5.1 先看命令的帮助, 在cmd.exe的提示符执行:java org.apache.axis.wsdl.WSDL2Java -h 
       我可以看到很多选项,其中就有-s和-S 
   5.2 执行WSDL2Java, 生成skeleton类: 
       java org.apache.axis.wsdl.WSDL2Java -s -S true BluePower.wsdl 
       将生成:  A skeleton class 
                  An implementation template class 
                  One deploy.wsdd file 
                  One undeploy.wsdd file 
   5.3 执行WSDL2Java, 不生成skeleton类: 
       java org.apache.axis.wsdl.WSDL2Java -s BluePower.wsdl 
       将生成:  
                  An implementation template class 
                  One deploy.wsdd file 
                  One undeploy.wsdd file 
       (我们发现少了一个A skeleton class) 
   5.4 名字解释: 
   Skeleton class: 
      它是Axis engine 和 the actual service implementation 类之间的一个代理类。 
       The skeleton contains an implementation of the AddressBook service. 
       This implementation is either passed into the skeleton on construction, 
       or an instance of the generated implementation is created. 
       When the Axis engine calls the skeleton's addEntry method, 
       it simply delegates the invocation to the real implementation's addEntry method. 
   Implementation Template class: 
       它就是我们的实际服务器端的实现代码,我们要在不同的方法里写具体的实现处理。 
       
6. 根据deploy.wsdd生成server-config.wsdd: 
  这里比较模糊,我暂时的方法是: 
  先部署一个web服务器,如用resin,然后把第5步生成的类文件放到classes下(eclipse可以指定编译路径), 
  把deploy.wsdd放到classes上一目录,也就是WEB-INF下,运行命令: 
  java -cp %AXIS_CLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/test/services/MyServer deploy.wsdd 
  若出现:<Admin>Done processing</Admin>则成功,若出现失败,则具体情况具体分析。 
  成功后,当前目录就会生成server-config.wsdd文件。 
  注意:为什么这里用%AXIS_CLASSPATH%, 因为直接把这些jar配置在CLASSPATH里,调用log4j时有冲突。最好不要放到CLASSPATH 
  
7. server-config.wsdd文件里的未解决的数组类型问题: 
  若接口参数或返回值有数组,则会生成ArrayMapping的配置,而在resin下配置axis的servlet去装载,就是不行。
  暂时的解决方法是,把这些数组类型就声明为一般类型,就能装载了;客户端用数组类型访问,服务器也能正常 
  解析出来,返回给客户端的数组类型,客户端也能正常解析。
目录
相关文章
|
4天前
|
安全 Java UED
Java中的多线程编程:从基础到实践
本文深入探讨了Java中的多线程编程,包括线程的创建、生命周期管理以及同步机制。通过实例展示了如何使用Thread类和Runnable接口来创建线程,讨论了线程安全问题及解决策略,如使用synchronized关键字和ReentrantLock类。文章还涵盖了线程间通信的方式,包括wait()、notify()和notifyAll()方法,以及如何避免死锁。此外,还介绍了高级并发工具如CountDownLatch和CyclicBarrier的使用方法。通过综合运用这些技术,可以有效提高多线程程序的性能和可靠性。
|
3天前
|
缓存 Java UED
Java中的多线程编程:从基础到实践
【10月更文挑战第13天】 Java作为一门跨平台的编程语言,其强大的多线程能力一直是其核心优势之一。本文将从最基础的概念讲起,逐步深入探讨Java多线程的实现方式及其应用场景,通过实例讲解帮助读者更好地理解和应用这一技术。
19 3
|
8天前
|
Java 调度 UED
深入理解Java中的多线程与并发机制
本文将详细探讨Java中多线程的概念、实现方式及并发机制,包括线程的生命周期、同步与锁机制以及高级并发工具。通过实例代码演示,帮助读者理解如何在Java中有效地处理多线程和并发问题,提高程序的性能和响应能力。
|
5天前
|
缓存 安全 Java
使用 Java 内存模型解决多线程中的数据竞争问题
【10月更文挑战第11天】在 Java 多线程编程中,数据竞争是一个常见问题。通过使用 `synchronized` 关键字、`volatile` 关键字、原子类、显式锁、避免共享可变数据、合理设计数据结构、遵循线程安全原则和使用线程池等方法,可以有效解决数据竞争问题,确保程序的正确性和稳定性。
13 2
|
6天前
|
存储 安全 Java
Java-如何保证线程安全?
【10月更文挑战第10天】
|
13天前
|
监控 Java Linux
Java 性能调优:调整 GC 线程以获得最佳结果
Java 性能调优:调整 GC 线程以获得最佳结果
51 11
|
7天前
|
Java
|
8天前
|
Java
【编程进阶知识】揭秘Java多线程:并发与顺序编程的奥秘
本文介绍了Java多线程编程的基础,通过对比顺序执行和并发执行的方式,展示了如何使用`run`方法和`start`方法来控制线程的执行模式。文章通过具体示例详细解析了两者的异同及应用场景,帮助读者更好地理解和运用多线程技术。
21 1
|
10天前
|
并行计算 Java 调度
深入理解Java中的多线程编程
【10月更文挑战第6天】 本文将探讨Java中多线程编程的基本概念、实现方式及其在实际项目中的应用。通过详细的示例和解释,读者能够掌握如何在Java中有效地使用多线程来提高程序的性能和响应能力。
11 1
|
11天前
|
Java 开发者
在 Java 多线程编程中,Lock 接口正逐渐取代传统的 `synchronized` 关键字,成为高手们的首选
【10月更文挑战第6天】在 Java 多线程编程中,Lock 接口正逐渐取代传统的 `synchronized` 关键字,成为高手们的首选。相比 `synchronized`,Lock 提供了更灵活强大的线程同步机制,包括可中断等待、超时等待、重入锁及读写锁等高级特性,极大提升了多线程应用的性能和可靠性。通过示例对比,可以看出 Lock 接口通过 `lock()` 和 `unlock()` 明确管理锁的获取和释放,避免死锁风险,并支持公平锁选择和条件变量,使其在高并发场景下更具优势。掌握 Lock 接口将助力开发者构建更高效、可靠的多线程应用。
18 2