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去装载,就是不行。
  暂时的解决方法是,把这些数组类型就声明为一般类型,就能装载了;客户端用数组类型访问,服务器也能正常 
  解析出来,返回给客户端的数组类型,客户端也能正常解析。
目录
相关文章
|
25天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
85 17
|
1月前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
21天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
1月前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
1月前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
1月前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
61 3
|
1月前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
188 2
|
1月前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
56 6
|
2月前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
1月前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####