标签: wsdl2java

生成缺少的Webservice Proxy Class

我们axis在项目中使用webservices.

到目前为止,我们已经在内部生成了Web服务客户端Eclipse.我们选择New -> Other -> Web Services -> Web Service Client.之后我们选择了wsdl,更改了开发客户端的步骤并选择了轴web服务运行时.

除了元素Eclipse生成5个存根/代理类.

  • MyService_PortType
  • MyService_Service
  • MyService_ServiceLocator
  • MyServiceProxy
  • MyServiceSOAPStub

作为最佳实践,我们现在尝试使用轴编写代理生成脚本wsdl2java.

我们正在使用:

wsdl2java.bat -uri ..\MyService.wsdl -S . -s
Run Code Online (Sandbox Code Playgroud)

这会产生:

  • MyService_PortType
  • MyService_Service
  • MyService_ServiceLocator
  • MyServiceSOAPStub

MyServiceProxy缺失.不幸的是,我们编码了这个代理,它基本上是围绕其他4个clases的包装器.没有代理类,我必须交换使用此代理的遗留代码.

如何生成此缺少的代理类.我检查了wsdl2java文档但是我无法弄清楚我需要设置什么选项.我想知道代理是否不是轴生成和自定义类的一部分Eclipse.

编辑:我刚刚注意到一个列出代理的不同帖子.可能它不是RAD特定的,它可能是Eclipse功能.

java eclipse axis wsdl2java webservice-client

5
推荐指数
0
解决办法
1840
查看次数

cxf中的WSDLToJava如何工作?

'org.apache.cxf.tools.wsdlto.WSDLToJava'将wsdl转换为java类.

它是否在内部使用JAXB?为什么这个命令能够生成类似'xjc'创建的类?有人可以解释一下它是如何工作的吗?

cxf wsdl2java

5
推荐指数
1
解决办法
1万
查看次数

WSDL 之外的 XSD 的 JAXB 绑定

我们正在使用来自第三方 WSDL 的 wsdl2java 生成 java(意味着我们无法修改他)。WSDL 包含:

<wsdl:import namespace="http://somenamespace" location="xsdschema.xsd" /> 
Run Code Online (Sandbox Code Playgroud)

在此 xsdschema 中,元素带有 nillable="true",生成器报告 ObjectFactory 中的冲突(重复)。我们尝试使用绑定generateElementProperty =“false”。但是在为 WSDL 定义的绑定定义中,生成器会忽略它,并且在为 xsd WSDL2Java 定义绑定时,XSD 不是编译的一部分。怎么解决呢?

WSDL 的 XJB(generateElementProperty 被忽略 - ObjectFactory 中仍然出现重复错误):

<jaxws:bindings version="2.0"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
               wsdlLocation="wsdl3rd.wsdl">

    <jaxb:bindings>
        <jaxb:globalBindings generateElementProperty="false"/>
    </jaxb:bindings>
</jaxws:bindings>
Run Code Online (Sandbox Code Playgroud)

XJB for XSD(错误:XSD 不是编译的一部分):

<jxb:bindings version="2.1" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jxb:bindings schemaLocation="xsdschema.xsd">
        <jxb:bindings>
          <jxb:globalBindings generateElementProperty="false"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings> 
Run Code Online (Sandbox Code Playgroud)

行家:

            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>${cxf.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                        <configuration>
                            <wsdlRoot>src/main/resources/wsdl</wsdlRoot>
                            <defaultOptions>
                                <bindingFiles>bindingFile>bindingFile.xjb</bindingFile>
                                </bindingFiles>
                            </defaultOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

binding xsd wsdl wsdl2java jaxb

5
推荐指数
1
解决办法
6790
查看次数

maven wsdl2java 配置无法正常工作

我希望通过 maven 执行 wsdl2java 并尝试了几种不同的方法但没有完全成功。我做的第一种方式:

<plugin>  
    <groupId>org.codehaus.mojo</groupId>  
    <artifactId>exec-maven-plugin</artifactId>  
    <version>1.1</version>  
    <executions>  
        <execution>  
            <phase>compile</phase>  
            <goals>  
                <goal>java</goal>  
            </goals>  
            <configuration>  
                <mainClass>org.apache.axis.wsdl.WSDL2Java</mainClass>  
                <arguments>  
                    <argument>-client</argument>  
                    <argument>-o</argument>  
                    <argument>gensrc</argument>  
                    <argument>wsdl/JobAPIWebWrapped.wsdl</argument>  
                </arguments>  
            </configuration>  
        </execution>  
    </executions>  
</plugin>
Run Code Online (Sandbox Code Playgroud)

由于对 org.apache.axis.wsdl.WSDL2Java 的调用,此版本将创建我正在寻找的确切结构,但不会继续使用除此之外的任何其他 maven 插件。它以执行 main 或类似的东西来结束日志。

我尝试过的另一种方法:

<plugin>  
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>3.1.2</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>gensrc</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>wsdl/JobAPIWebWrapped.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

此执行的问题在于它生成的 java 文件比之前执行的更高。我检查了这个更大的文件集的兼容性,发现它可以正常工作,但想找到一种方法来强制它使用与第一个示例相同的 java 类来执行。但是,此版本将完成并允许我继续使用 maven 调用的以下插件。

第三:

<plugin> 
    <groupId>org.apache.axis</groupId>
    <artifactId>wsdl2java-maven-plugin</artifactId>
    <version>1.4.1-SNAPSHOT</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
        <implementationClassName>org.apache.axis.wsdl.WSDL2Java</implementationClassName>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这个版本甚至没有被识别......想知道我是否错误地调用了插件,因为它甚至没有出现在任何带有详细日志记录的地方。 …

wsdl2java maven exec-maven-plugin cxf-codegen-plugin

5
推荐指数
1
解决办法
1万
查看次数

如何在一次执行下使用适用于 Maven 的 Apache CXF 代码生成插件为多个服务生成源

我目前正在使用 Maven 的 Apache CXF 代码生成插件(版本 3.1.1)从我们的客户端提供的 WSDL 生成源代码。我指定了 wsdl2java 目标,并且我想为多个服务生成代码。我知道您可以<serviceName><wsdlOption>标签下指定 a ,但是当我尝试放置多个<serviceName>,或者甚至<wsdlOption>使用<wsdl>具有不同的相同值创建另一个时<serviceName>,它似乎忽略其中一个,而只为一项服务生成类。

我发现解决此问题的唯一方法是创建另一个相同的<execution>块并更改<serviceName>. 我做错了什么,或者这是唯一的方法吗?这是一个的整体设置<execution>(出于隐私考虑,路径和服务名称已更改):

<execution>
    <id>generate-sources-a</id>
    <phase>generate-sources</phase>
    <configuration>
        <encoding>UTF-8</encoding>
        <defaultOptions>
            <bindingFiles>
                <bindingFile>binding.xjb</bindingFile>
            </bindingFiles>
        </defaultOptions>
        <sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
        <wsdlRoot>${project.build.directory}/wsdl</wsdlRoot>
        <includes>
            <include>Path/To/WSDL/MyWSDL.wsdl</include>
        </includes>
        <wsdlOptions>
            <wsdlOption>
                <wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
                <serviceName>ServiceA</serviceName>
            </wsdlOption>
        </wsdlOptions>
    </configuration>
    <goals>
        <goal>wsdl2java</goal>
    </goals>
</execution>
Run Code Online (Sandbox Code Playgroud)

我试过这两个:

<wsdlOptions>
    <wsdlOption>
        <wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
        <serviceName>ServiceA</serviceName>
        <serviceName>ServiceB</serviceName>
    </wsdlOption>
</wsdlOptions>
Run Code Online (Sandbox Code Playgroud)

...和这个(在http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html 的示例 4 中使用):

<wsdlOptions>
    <wsdlOption>
        <wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
        <serviceName>ServiceA</serviceName>
    </wsdlOption>
    <wsdlOption>
        <wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl> …
Run Code Online (Sandbox Code Playgroud)

java wsdl2java pom.xml maven cxf-codegen-plugin

5
推荐指数
1
解决办法
1456
查看次数

cxf:cxf-codegen-plugin:2.1.2:wsdl2java failed:Illegal character in opaque part at index 2

由于以下异常,我无法使用 cxf:cxf-codegen-plugin 从 WSDL 生成所需的源:

[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.1.2:wsdl2java (generate-sources) on project innoclient: Execution generate-sources of goal org.apache.cxf:cxf-codegen-plugin:2.1.2:wsdl2java failed: Illegal character in opaque part at index 2: C:\WORK\BAG\WS\POC\innoclient/src/main/wsdl/mywsdl.wsdl -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.1.2:wsdl2java (generate-sources) on project innoclient: Execution generate-sources of goal org.apache.cxf:cxf-codegen-plugin:2.1.2:wsdl2java failed: Illegal character in opaque part at index 2: C:\WORK\WS\POC\src/main/wsdl/mywsdl.wsdl
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216) …
Run Code Online (Sandbox Code Playgroud)

java web-services cxf wsdl2java

5
推荐指数
1
解决办法
3907
查看次数

使用 WSDL2Java 从 WSDL 生成的源使用 java 11 上已弃用的 API javax xml ws 生成类

在我的项目中,我使用的是 java 11。

基于 WSDL 文件,我使用cxf-codegen-pluginMaven 插件生成代码类。java 11 上生成的类、使用javax.xml.ws.*和其他 API。

例子 :

extends Service 来自该库的生成类之一javax.xml.ws.Service在 java 11 上并未弃用,但我遇到了兼容性错误。

java.lang.IllegalArgumentException: JAXP09020005: The specified argument 'classpath:/schemas/wsdl' (case sensitive) for 'setRewritePrefix' is not valid.
    at java.xml/javax.xml.catalog.CatalogMessages.reportIAE(CatalogMessages.java:140) ~[na:na]
    at java.xml/javax.xml.catalog.BaseEntry.verifyURI(BaseEntry.java:231) ~[na:na]
    at java.xml/javax.xml.catalog.RewriteSystem.setRewritePrefix(RewriteSystem.java:65) ~[na:na]
    at java.xml/javax.xml.catalog.RewriteSystem.<init>(RewriteSystem.java:47) ~[na:na]
    at java.xml/javax.xml.catalog.CatalogReader.startElement(CatalogReader.java:190) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2708) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) ~[na:na]
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) ~[na:na]
    at …
Run Code Online (Sandbox Code Playgroud)

java wsdl wsdl2java cxf-codegen-plugin java-11

5
推荐指数
1
解决办法
4758
查看次数

Apache CXF 2.3.0 WSDLToJava问题

我正在尝试apachecxf 2.3.0,我在使用wsdlToJava工具时遇到了问题.无论如何,我得到一个WSDLToJava错误:java.lang.reflect.UndeclaredThrowableException.尝试使用旧版本2.1,它在同一个WSDL上运行良好.是否有其他人对此版本有同样的问题?

cxf wsdl2java

4
推荐指数
1
解决办法
4695
查看次数

为什么axistools-maven-plugin试图访问这个相对模式位置?

我们正在使用Axis 1.x进行Web服务项目,并且我在使Maven构建工作时遇到了问题.

我做了

 mvn clean generate-sources
Run Code Online (Sandbox Code Playgroud)

这触发了axistools-maven-plugin的wsdl2java目标.它最终会中止

[INFO] [axistools:wsdl2java {execution: generate-project}]
[INFO] about to add compile source root
[INFO] Processing wsdl: C:\Project\src\main\webapp\WEB-INF\wsdl\project.wsdl
Jan 24, 2011 11:24:58 AM org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error generating Java code from WSDL.

Embedded error: Error running Axis
C:\Project\src\main\webapp\WEB-INF\project.xsd (The system cannot find the file specified)
Run Code Online (Sandbox Code Playgroud)

这是对的.该文件不存在.(并且-e不会产生额外的有用信息 - 这是一个LifecycleExecutionException,由MojoExecutionException引起,由AxisPluginException引起,由FileNotFoundException引起.)

关键是,它不应该搜索WEB-INF\project.xsd,它应该访问WEB-INF\wsdl\project.xsd.

这是WSDL所说的: …

java axis maven-2 wsdl2java

4
推荐指数
1
解决办法
8914
查看次数

CXF - Wsdl2java - 已定义XX属性

我使用CXF生成客户端类来访问Web服务服务器.Web服务基于WCF(.NET).

当我调用wsdl2java时,我有以下错误:

The id property is already defined. use <jaxb:property> to resolve this conflict. The following location matches the above error : http://*****/WcfDemandService.svc?xsd=xsd2 [0,0]
Run Code Online (Sandbox Code Playgroud)

如果我询问xmlbeans数据绑定(使用"db xmlbeans"选项),则不会出现此错误.

有没有办法用JAXB数据绑定生成类?

cxf properties wsdl2java jaxb defined

4
推荐指数
1
解决办法
7289
查看次数