我们正在将第三方SOAP Web服务集成到我们的应用程序中.WSDL与SOAPUI工具一起使用,其中样本请求和响应工作正常.
当我们尝试与apache Axis 1.3集成时,我们尝试使用WSDL的WSDL2JAVA.我们收到了以下错误消息
java.io.IOException的:错误:缺少元件InFault已 "serviceFault" 在操作中 "serviceFault",在org.apache.axis在org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858)结合saveRegistration .wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549)在org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744)在org.apache.axis.wsdl.symbolTable.SymbolTable.add (SymbolTable.java:543)在org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518)在org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)在java.lang.Thread.run上的org.apache.axis.wsdl.gen.Parser $ WSDLRunnable.run(Parser.java:361)(未知来源)
有人已经遇到过这个问题并解决了吗
我正在尝试生成webservices客户端,一旦我在运行中构建我的项目..它目前这样做,但把它放在基于WS的命名空间命名的包中..所以我们假设名称空间是google.com,生成文件将在com.google中..
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.2.10</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java/</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>http://localhost:8080/ProjectName/ProjectWS?wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我想生成不同包的文件..让我们称之为comWS.gooleClient
有可能吗?
谢谢
我有一个WSDL文件,它导入了几个XML Schema,每个都有相同的命名空间(让我们称之为A).我正在尝试使用JAXB外部绑定文件来更改这些模式的生成包名称(比如说B).这是一个例子:
我有一个POM文件,其中包含从WSDL生成代码的配置(使用cxf-codegen-plugin).
我的WSDL:
<definitions ...>
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="C">
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
...
</xsd:schema>
</types>
...
</definitions>
Run Code Online (Sandbox Code Playgroud)
这是我的实际绑定文件根本不起作用,它似乎根本没有应用(没有错误消息...).
<jaxws:bindings wsdlLocation="WSDL_LOCATION" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" jaxb:version="2.0">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='C']/xs:import[@namespace='A']">.
<jaxb:schemaBindings>
<jaxb:package name="B" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
Run Code Online (Sandbox Code Playgroud)
因为我在生成中没有任何错误消息,可能是因为用于访问导入模式的XPath表达式不好...
你们有什么线索吗?我有点被困在这里......
提前感谢您的投入!
我正在使用Axis2 1.5.1(wsdl2java)从给定的WSDL文件生成代码(客户端存根).
Web服务由外部应用程序提供.
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:tns="http://tempuri.org/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:i0="http://schemas.microsoft.com/ws/2005/02/mex/bindings"
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsa10="http://www.w3.org/2005/08/addressing"
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
name="service" targetNamespace="http://tempuri.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication0.xsd" />
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication1.xsd" />
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication2.xsd" />
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication3.xsd" />
</xsd:schema>
</wsdl:types>
...
</wsdl:definition>
Run Code Online (Sandbox Code Playgroud)
RemoteApplication0.xsd的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/Message"
elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/Message"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="MessageBody">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
命令行:
wsdl2java -ss -g -d adb -or -p com.sampleapp.ws.generated.client -uri SampleRemoteProcess.wsdl
Run Code Online (Sandbox Code Playgroud)
生成过程会导致异常.
堆栈跟踪:
Using AXIS2_HOME: …Run Code Online (Sandbox Code Playgroud) 我正在为axis2 Web服务使用wsdl2java生成的Web服务客户端(axis2版本为1.6.1).因此,对于http连接,使用旧版本的commons-httpclient 3.1.在对我的Web服务客户端进行一些负载测试时.在某些情况下,我遇到了这个例外
org.apache.axis2.AxisFault: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at com.ardic.arcsp.carbon.registry.ws.stub.WSStorageServiceStub.fromOM(WSStorageServiceStub.java:16706)
at com.ardic.arcsp.carbon.registry.ws.stub.WSStorageServiceStub.wSgetById(WSStorageServiceStub.java:6659)
at com.ardic.arcsp.update.wsclient.WSStorageServiceClient.getResourceById(WSStorageServiceClient.java:177)
at com.ardic.arcsp.update.wsclient.OTAUpdateTestServlet.downloadResource(OTAUpdateTestServlet.java:162)
at com.ardic.arcsp.update.wsclient.OTAUpdateTestServlet.doGet(OTAUpdateTestServlet.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:273)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:270)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:305)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:298)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:57)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.wso2.carbon.server.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:154)
at org.wso2.carbon.server.TomcatServer$1.invoke(TomcatServer.java:254)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:396) …Run Code Online (Sandbox Code Playgroud) 使用Axis2 Wsdl2Java:有没有办法从wsdl生成相关的客户端代码,但只能用于wsdl中受支持的操作的子集.
也就是说,如果wsdl说过一个有争议的操作,那么只能为一个或两个感兴趣的操作生成客户端存根代码?
我已经为客户WSDL生成了客户端存根,并且生成的存根和支持代码对于我的目的来说太大了> 75MB.
我使用了带有-U选项的Axis2 Wsdl2Java来解压缩绑定,并且由于在尝试使用ADB时出现解析错误,我还必须使用XML bean绑定.
谢谢,
由于我没有收到太多关于此的反馈:我将编辑这个来重述问题,(因为我真的不关心解决方案是如何得出的).
基本上我真正的问题是我正在生成一个相当大的WAR文件,该文件在Tomcat7.0中使用客户端并且它消耗了大量内存.
也许,我不需要/不应该在WAR中捆绑所有生成的类.但在我看来,这些是Stub生成的不可或缺的部分,我相信有一个更优雅的解决方案,而不是我手动挑选出来的东西?
所以我想以另一种方式重述问题:Axis2正在生成一个非常大的WAR文件,它消耗了大量的Tomcat资源.如何缩小此WAR以使其更小/"更轻量级"WAR.
谢谢,
我在maven项目中使用wsdl2java来生成一些工件.我没有从头开始,而是继承了我前任的工作.我有一个与我的pom文件中的标签相关的问题.
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.1.4</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdlLocation>http://localhost:8080/sunrise/sunrise?wsdl</wsdlLocation>
<wsdl>${basedir}/src/main/webapp/WEB-INF/wsdl/sunrise/sunrise.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我特别感兴趣的是内心<wsdlOptions>.<wsdlLocation>和之间有什么区别<wsdl>?哪一个用于生成工件?
我试图通过SOAP传递Hashmap.我正在使用CXF wsdl2java来创建我的架构.我已经为我的HashMap创建了一个包装类,因为Hashmap本身不能通过该行传递.
然后我创建了适配器来将Hashmap变形为我的wsdl的已知类型,但是当我的wsdl被创建时,它会添加一些不需要的抽象地图.以下是代码:
这是我的HashMap包装类
@XmlRootElement(name = "testTO")
public class TestTO {
private HashMap<String, Object> mapTest;
public TestTO(){
this.mapTest = new HashMap<String, Object>();
}
@XmlJavaTypeAdapter(MapAdapter.class)
public HashMap<String, Object> getMapTest() {
return mapTest;
}
public void setMapTest(HashMap<String, Object> mapTest) {
this.mapTest = mapTest;
}
}
Run Code Online (Sandbox Code Playgroud)
这是MyMap类,其中是已知的模式类型
@XmlJavaTypeAdapter(MapAdapter.class)
public class MyMap extends HashMap<String, Object>{
public final List<Entry> entryList = new ArrayList<Entry>();
}
Run Code Online (Sandbox Code Playgroud)
这是Entry List,其中包含上面的列表:
public class Entry {
@XmlAttribute
public String key;
@XmlElements({
@XmlElement(name = "byte", type = byte.class),
@XmlElement(name = "short", type …Run Code Online (Sandbox Code Playgroud) 我有一个使用WSDL服务的Java项目.pom给出了一个错误(所以我的项目中有红色X)但是所有内容都构建并正确运行.我很难过,任何想法都是适当的.
这是麻烦制造者:
< !-- WSDL stub generation -- >
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId >cxf-codegen-plugin</artifactId>
<version>${cxf-codegen-plugin.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/wsdl/Service.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这是我从上面的执行元素得到的错误:
执行生成目标org.apache.cxf:cxf-codegen-plugin:2.7.2:wsdl2java失败:插件org.apache.cxf:cxf-codegen-plugin:2.7.2或其中一个依赖项无法解析:无法收集org.apache.cxf的依赖项:cxf-codegen-plugin:jar:2.7.2()(org.apache.cxf:cxf-codegen-plugin:2.7.2:wsdl2java:generate-sources:generate-源)
(对不起'<'和'>'周围的空格.我是SO的新手,还不能张贴图片.
Java 1.7 Spring 3.1.1 with Spring-WS 2.1.1 Joda Hibernate 3.6 MySQL 5.0.57 Maven 3 Tomcat 7 Eclipse 3.7
已部署Web服务并部署Web客户端,Web服务和Web客户端相互通信.
但就像在老式的视频游戏中一样,杀死一批龙只会产生另一批龙.
现在它是整个Joda Datetime xs:dateTime jaxb绑定的东西,它向我喷火.
谷歌搜索提出了许多我试图遵循的解决方案.
代表实体
@Entity
@Table(name="form_templates", catalog="mycomp")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FormTemplate implements java.io.Serializable
{
private static final long serialVersionUID = 8533964268513480152L;
....
@Column(name="revision_datetime")
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
@XmlElement(name="revisionTimestamp")
@XmlJavaTypeAdapter(JodaDateTimeAdapter.class)
@XmlSchemaType(name="dateTime")
DateTime revisionTimestamp;
....
}
Run Code Online (Sandbox Code Playgroud)
JodaDateTimeAdapter
@XmlTransient
public class JodaDateTimeAdapter extends XmlAdapter<String, DateTime>
{
private static final DateTimeFormatter XML_DATE_FORMAT = ISODateTimeFormat.dateTimeNoMillis();
private static final DateTimeFormatter XML_DATE_TIME_FORMAT = ISODateTimeFormat.localDateOptionalTimeParser();
private static final …Run Code Online (Sandbox Code Playgroud)