`

从wsdl生成java

阅读更多
开发环境:
JDK:jdk1.5.0_16
服务器:jboss-4.2.2.GA

JWS面向服务的开发有三中方式,从JAVA到WSDL方式是最简单的,利用JAX-WS的注解,在JAVA类上进行标识,然后以Servlet的形式发布,服务器在解析的过程中自动生成WSDL。

从WSDL到JAVA也比较简单,只是不太常用,不过还是有必要了解到底是怎么回事。
JBOSS自带了一个工具来实现此功能,ANT任务使用的类为:org.jboss.wsf.spi.tools.ant.WSConsumeTask,它为调用wsconsume命令

先看build.xml

<?xml version="1.0"?>
<project name="wsdltojava" default="gen_java" basedir=".">

	<property name="dir.src" value="src"/>
	<property name="jboss.server.config" value="default"/>
	<property name="jboss.net.version" value="4.0"/>
	<property name="jboss.home" value="D:/jboss-4.2.2.GA"/>
<!-- 由于本人机子上有几个JDK,所以另起了一个名字 -->
	<property name="java5.home" value="C:/jdk1.5.0_16"/>

	<path id="web.service.classpath">

		<fileset dir="${java5.home}/lib/" includes="*.jar" />
		<fileset dir="${jboss.home}/lib/" includes="*.jar" />
		<fileset dir="${jboss.home}/lib/endorsed/" includes="*.jar" />

		<!-- Please dont put jaxws-tools.jar and jaxws-rt.jar on
			Eclipse's classpath at all, its fine within ant. Its
			to do with JAXB API bundled in Eclispe and Jboss -->

		<fileset dir="${jboss.home}/client/">
			<include name="activation.jar" />
			<include name="getopt.jar" />
			<include name="wstx.jar" />
			<include name="jbossall-client.jar" />
			<include name="log4j.jar" />
			<include name="mail.jar" />
			<include name="jbossws-spi.jar" />

			<include name="stax-api.jar" />
			<include name="jaxb-api.jar" />
			<include name="jaxb-impl.jar" />
			<include name="jaxb-xjc.jar" />
			<include name="streambuffer.jar" />
			<include name="stax-ex.jar" />

			<include name="javassist.jar" />
			<include name="jboss-xml-binding.jar" />
			<include name="jbossws-client.jar" />
			<include name="jboss-jaxws.jar" />
			<include name="jboss-jaxrpc.jar" />
			<include name="jboss-saaj.jar" />

			<include name="jboss-srp-client.jar" />
			<include name="jbossws-common.jar" />
			<include name="jbossws-core.jar" />

			<!-- Be careful with these two jars in Eclipse,
					dont put it on classpath -->

			<include name="jaxws-tools.jar" />
			<include name="jaxws-rt.jar" />
		</fileset>
	</path>

	<target name="gen_java">
		<taskdef name="wsconsume" classname="org.jboss.wsf.spi.tools.ant.WSConsumeTask">
			<classpath>
				<path refid="web.service.classpath" />
			</classpath>
		</taskdef>
		<wsconsume 
				fork="true" 
				verbose="true" 
				sourcedestdir="${dir.src}" 
				package="com.client" 
				keep="true" 
				wsdl="wsdl/ticket-impl.wsdl" />
	</target>

</project>


下面给出两个wsdl文件

ticket-impl.wsdl

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="http://jbpm.org/examples/ticket"
  xmlns:tns="http://jbpm.org/examples/ticket" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">

  <import namespace="http://jbpm.org/examples/ticket" location="ticket.wsdl" />

  <binding name="TicketIssuerBinding" type="tns:TicketIssuer">

    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

    <operation name="createTicket">
      <soap:operation soapAction="http://jbpm.org/examples/ticket#createTicket" />
      <input>
        <soap:body use="literal" namespace="http://jbpm.org/examples/ticket" />
      </input>
      <output>
        <soap:body use="literal" namespace="http://jbpm.org/examples/ticket" />
      </output>
    </operation>

  </binding>

  <service name="TicketService">
    <port name="TicketIssuerPort" binding="tns:TicketIssuerBinding">
      <soap:address location="REPLACE_WITH_ACTUAL_URI" />
    </port>
  </service>

</definitions>



ticket.wsdl

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="http://jbpm.org/examples/ticket"
  xmlns:tns="http://jbpm.org/examples/ticket" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.xmlsoap.org/wsdl/">

  <message name="ticketRequest">
    <documentation>ticket creation request</documentation>
  </message>

  <message name="ticketMessage">
    <documentation>ticket number wrapper</documentation>
    <part name="ticketNo" type="xsd:int" />
  </message>

  <portType name="TicketIssuer">
    <documentation>interface to ticket issuer service</documentation>

    <operation name="createTicket">
      <documentation>generate a ticket number, distinct from previous calls</documentation>
      <input message="tns:ticketRequest" />
      <output message="tns:ticketMessage" />
    </operation>

  </portType>

</definitions>


用ANT执行一下,就会在src/com/client 下生成TicketService.java和TicketIssuer.java两个JAVA文件
虽然看起来有点麻烦,但理解起来其实也挺简单的。不过还有一种从WSDL和JAVA的开发模式就比较困难一点了,有机会也会去试一下。
分享到:
评论

相关推荐

    wsdl生成java代码工具

    本篇文章将详细探讨“wsdl生成java代码工具”的相关知识点,以及如何使用这个工具。 1. **WSDL简介**: WSDL文件描述了Web服务的接口,包括服务提供的操作、输入和输出消息的格式,以及服务的位置。它使得开发者...

    WSDL2Java--根据wsdl生成Java客户端工具

    - **自动化**:自动从WSDL生成Java代码,减少了手动编写客户端代码的工作量。 - **可扩展性**:可以根据需要自定义生成的代码,适应不同的业务场景。 - **跨平台**:基于XML标准,可以在任何支持Java的平台上使用。 ...

    Eclipse中用wsdl生成java客户端.pdf

    以下是使用Eclipse从WSDL生成Java客户端的详细步骤,以及相关知识点的解释: 1. **创建Java项目**: 首先,打开Eclipse,创建一个新的Java项目。在"File"菜单中选择"New" -&gt; "Java Project",输入项目名称,例如...

    axis2根据wsdl生成java客户端代码

    axis2根据wsdl生成java客户端代码 D:\Software\axis2-1.6.2\bin&gt;wsdl2java.bat -uri http://10.33.30.216:9099/facs/services/ResourceSynchroWebService?wsdl -o E:\wsdloutput -p com.util wsdl2java.bat -uri ...

    wsdl文件生成java webservice 工具(附带生成后调用方法)

    在IT行业中,Web服务是一种常见的跨平台通信方式,允许不同系统之间交换...通过这个工具,可以快速地从WSDL文件生成Java代码,大大简化了Web服务的开发过程。只要遵循上述步骤,你就能成功地创建和调用Java Web服务。

    Axis 把WSDL生成JAVA类

    - **类生成策略**:对于每个在WSDL中定义的操作,WSDL2Java会生成相应的Java接口和实现类(存根或骨架)。每个类都有对应的get和set方法,以便于数据的封装和解封。 - **序列化支持**:生成的Java类通常实现了`...

    Eclipse中用wsdl生成java客户端

    Eclipse中用wsdl生成java客户端 Eclipse是一款功能强大、功能丰富的集成开发环境(IDE),广泛应用于Java开发领域。随着WebService技术的普及,Eclipse也提供了相应的支持,允许开发者通过wsdl文件生成Java客户端...

    WebService的WSDL文件生成Java代码工具

    理解并掌握如何从WSDL文件生成Java代码是开发和消费WebService的关键技能之一。这不仅简化了开发流程,还使得不同系统间的互操作性得以实现,促进了软件组件的重用和集成。在实际项目中,应根据项目需求和团队习惯...

    使用CXF: Java 2 WSDL

    8. **客户端生成**:CXF还支持从WSDL生成Java客户端代码,使得调用Web服务变得更加简单,只需按照生成的客户端代码进行操作即可。 9. **最佳实践**:在实际项目中,确保Java接口清晰、符合面向服务的设计原则,以及...

    使MyEclipse调用Axis的wsdl2java 通过wsdl生成客户端

    总结起来,通过MyEclipse调用Axis的`wsdl2java`命令,我们可以高效地生成基于WSDL的Web服务客户端代码。这个过程简化了开发者的工作,使得与Web服务的交互变得更为便捷。在实际开发中,熟练掌握这一技能将极大地提高...

    WSDL生成Web Service java客户端

    在IT行业中,Web服务是一种基于互联网的标准协议,用于不同系统之间的通信和数据...通过上述步骤,你可以轻松地从WSDL生成Java客户端,实现对Web服务的调用。在处理跨平台、分布式系统集成时,这是一项非常重要的技能。

    关于wsdl生成java的方式

    【标题】:“关于WSDL生成Java的方式” 在Web服务开发中,WSDL(Web Services Description Language)是一个XML格式的规范,用于定义服务接口、消息交换模式以及如何通过网络调用这些服务。它允许开发者明确地描述...

    wsdl2java 生成wsdljava客户端所需要的包

    它是由Apache CXF项目提供的,能够从一个WSDL文件自动生成Java源代码,这些源代码包含了客户端调用Web服务所需的 stubs、proxies和数据绑定类。这极大地简化了开发者的工作,无需手动编写复杂的网络调用代码。 生成...

    wsdl2java 客户端的自动生成工具

    `Wsdl2Java`是Axis的一部分,它可以从WSDL文件生成Java源码,这些源码包括了客户端和服务端的Stubs、Skeletons以及数据绑定类。对于客户端来说,生成的代码可以方便地调用Web Service接口,处理输入输出参数。对于...

    wsdl生成java客户端报错问题解决方法

    解决使用wsdl生成java客户端报错:java.lang.reflect.invocationtargetexception的方法之一

    根据wsdl生成webservice服务端(3种方式)

    本文将详细介绍三种基于WSDL生成WebService服务端的方法:使用`wsdl2java`命令、通过SOAPUI工具及借助MyEclipse的Web Service项目功能。 #### 方法一:使用`wsdl2java`命令生成 `wsdl2java`是Apache CXF提供的一个...

    把wsdl文件或地址转化成java代码工具

    【标题】:“把wsdl文件或地址...MyEclipse和Apache CXF的wsdl2java工具都是常用的解决方案,它们通过解析WSDL文件,自动生成与服务接口对应的Java类,使得开发者可以专注于业务逻辑的实现,而不用关心底层通信的细节。

    使用cxf wsdl2java生成webservice客户端

    使用cxf wsdl2java生成webservice客户端命令

    wsdl2java源码-sbt-cxf-wsdl2java:一个sbt插件,用于使用cxf从WSDL生成java工件

    wsdl2java源码sbt-cxf-wsdl2java 一个 sbt 插件,用于使用 cxf 从 WSDL 生成 java 工件 要求 快速开始 将插件添加到project/plugins.sbt : resolvers + = " Sonatype Repository " at " ...sbt-cxf-wsdl2java ...

    onvif wsdl转成java代码

    这个过程通常涉及到SOAP(Simple Object Access Protocol)库,如Apache CXF或 Axis2,这些库能将WSDL解析并生成Java代码。 在Eclipse中,导入生成的Java包后,开发者就可以在Java项目中直接调用ONVIF服务,实现对...

Global site tag (gtag.js) - Google Analytics