开发环境:
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代码的工具,运行wsdl2java.cmd ,可根据代码的实际需求修改成路径, wsdl生成java代码的工具,运行wsdl2java.cmd ,可根据代码的实际需求修改成路径
Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类Axis 把WSDL生成JAVA类
axis2根据wsdl生成java客户端代码 D:\Software\axis2-1.6.2\bin>wsdl2java.bat -uri http://10.33.30.216:9099/facs/services/ResourceSynchroWebService?wsdl -o E:\wsdloutput -p com.util wsdl2java.bat -uri ...
Eclipse中用wsdl生成java客户端 Eclipse是一款功能强大、功能丰富的集成开发环境(IDE),广泛应用于Java开发领域。随着WebService技术的普及,Eclipse也提供了相应的支持,允许开发者通过wsdl文件生成Java客户端...
WSDL2Java--根据wsdl生成Java客户端工具
WebService的WSDL文件生成Java代码工具
Eclipse中用wsdl生成java客户端.pdf
解决使用wsdl生成java客户端报错:java.lang.reflect.invocationtargetexception的方法之一
使用cxf wsdl2java生成webservice客户端命令
wsdl2java源码sbt-cxf-wsdl2java 一个 sbt 插件,用于使用 cxf 从 WSDL 生成 java 工件 要求 快速开始 将插件添加到project/plugins.sbt : resolvers + = " Sonatype Repository " at " ...sbt-cxf-wsdl2java ...
详细介绍3种方法根据wsdl逆向生成webservice服务端;有最原始的wsdl2java指令,还有通过soapUI工具以及通过myeclipse的web service project来生成。
Java2WSDL 和 WSDL2Java 是两种常用的 Web 服务开发工具,它们可以帮助开发者快速生成 Web 服务的 WSDL 文件和 Java 代码。本文详细介绍了 Java2WSDL 和 WSDL2Java 的使用方法和参数设置,旨在帮助开发者更好地理解...
onvif协议的开发,wsdl转成为java包,导入eclipse即可使用,可二次开发
WSDL2JavaWSDL2JavaWSDL2JavaWSDL2JavaWSDL2JavaWSDL2JavaWSDL2Java
生成wsdljava客户端所需要的包 如果不会使用请查看我的博客!
在使用Idea根据wsdl自动生成java code的时候;抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java(Throws Could not find main class: org.apache.axis.wsdl.WSDL2Java)。 添加本文的jar包压缩包解压出来的所有jar包...
wsdl2java工具 修改WSDL2Java(URL).bat后直接双击运行即可 编辑 WSDL2Java(URL).bat set Axis_Lib=.\lib //引用包 set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=.\source //输出目录 set Package...
wsdl2java wsdl2java wsdl2java 生成客户端服务端代码
1、安装jdk Java开发环境 2、编辑(包名,输出路径,wsdl)参数并运行WSDL2Java(URL).bat或者WSDL2Java(file).bat后,将在source中生成WebService客户端代码。 3、直接使用生成的代码调用WebService服务即可。
利用axis jar包 根据wsdl文件生成java webservice 工具 (附带生成后调用方法和详细说明) 及其适合工作着与初学者调试和学习,已经通过测试完全可用