标签: wsdl2java

由于对所需库rt.jar的限制而对类进行访问限制?

我正在尝试编译由IBM的WSDL2Java在Java5上创建的Java 1.4代码,而无需重新创建存根并在Eclipse中看到此错误.我假设创建的存根应该只要运行时jar可用就可以编译(它们是).

Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar

完整的类名是 javax.xml.namespace.QName

到底发生了什么?

这是我试图用香肠重构一头猪的情况吗?我最好重新创建存根吗?

java eclipse wsdl wsdl2java stub

813
推荐指数
12
解决办法
62万
查看次数

如何避免在CXF或JAX-WS生成的Web服务客户端中指定WSDL位置?

当我使用来自CXF的wsdl2java(生成类似于wsimport的东西)生成一个webservice客户端时,通过maven,我的服务从这样的代码开始:

@WebServiceClient(name = "StatusManagement", 
                  wsdlLocation = "c:/some_absolute_path_to_a_wsdl_file.wsdl",
                  targetNamespace = "http://tempuri.org/") 
public class StatusManagement extends Service {

    public final static URL WSDL_LOCATION;
    public final static QName SERVICE = new QName("http://tempuri.org/", "StatusManagement");
    public final static QName WSHttpBindingIStatus = new QName("http://tempuri.org/", "WSHttpBinding_IStatus");
    static {
        URL url = null;
        try {
            url = new URL("c:/some_absolute_path_to_a_wsdl_file.wsdl");
        } catch (MalformedURLException e) {
            System.err.println("Can not initialize the default wsdl from c:/some_absolute_path_to_a_wsdl_file.wsdl");
            // e.printStackTrace();
        }
        WSDL_LOCATION = url;
    }
Run Code Online (Sandbox Code Playgroud)

硬编码的绝对路径真的很糟糕.生成的类不能在除我之外的任何其他计算机上工作.

第一个想法是将WSDL文件(以及它导入的所有内容,其他WSDL和XSD)放在jar文件和类路径中.但我们想避免这种情况.由于所有这些都是由基于WSDL和XSD的CXF和JAXB生成的,因此我们认为在运行时需要知道WSDL没有意义.

wsdlLocation属性旨在覆盖WSDL位置(至少这是我在某处获得的),默认值为"".由于我们使用maven,我们尝试<wsdlLocation></wsdlLocation>在CXF的配置中包含以尝试强制源生成器将wsdlLocation留空.但是,这只是使它忽略XML标记,因为它是空的.我们做了一个非常难看的可耻黑客,使用<wsdlLocation>" + "</wsdlLocation>. …

java wsdl cxf wsdl2java

157
推荐指数
7
解决办法
15万
查看次数

Java Webservice Client(最佳方式)

我有第三方WSDL,我需要用Java编写代码,以便Web服务客户端调用第三方WSDL中的操作.现在,我使用Axis的WSDL2JAVA工具生成了客户端存根,并使用XMLbeans进行数据绑定.

  1. 这个JAVA的最佳方法是什么?
  2. 我看过SAAJ,看起来会有更细粒度的方法吗?
  3. 除了使用WSDL2Java工具之外,还有其他方法来生成代码.也许wsimport在另一种选择.优缺点都有什么?
  4. 有人可以发送关于这些主题的一些好教程的链接吗?
  5. 使用WSDL2Java生成代码时需要使用哪些选项?

我最初使用了一些基本的东西.现在我有这些选择

C:\axis2-1.5.1\bin>wsdl2java -uri  mywsdlurl  -o client -p somepackage -d xmlbeans -s -t -ssi
Run Code Online (Sandbox Code Playgroud)

java axis2 wsdl2java jax-ws webservice-client

81
推荐指数
2
解决办法
10万
查看次数

JAXB生成JAXBElement <String>而不是String

我正在使用Apache CXF cxf-codegen-plugin Maven插件从WSDL文件生成源代码.问题是我JAXBElement<String>生成而不是String.我添加了如下所示的jaxb-bindings.xml文件:

<jaxb:bindings version="2.1"
               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
    <jaxb:globalBindings generateElementProperty="false"/>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)

这应该阻止JAXB生成JAXBElement<String>.但它不起作用我仍然JAXBElement<String>生成而不是String.

我的Maven插件看起来像这样:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.runtime.version}</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-bindings-soap</artifactId>
            <version>${cxf.runtime.version}</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>generate-jaxb</id>
            <phase>generate-sources</phase>
            <configuration>
                <additionalJvmArgs>-Dfile.encoding=UTF8</additionalJvmArgs>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>src/main/resources/wsdl/Cubiks.wsdl</wsdl>
                        <extraargs>
                            <extraarg>-b</extraarg>
                            <extraarg>${basedir}/jaxb-bindings.xml</extraarg>
                            <extraarg>-b</extraarg>
                            <extraarg>${basedir}/jaxws-bindings.xml</extraarg>
                            <extraarg>-exsh</extraarg>
                            <extraarg>true</extraarg>
                            <extraarg>-wsdlLocation</extraarg>
                            <extraarg></extraarg>
                        </extraargs>
                    </wsdlOption>
                    <wsdlOption>
                        <wsdl>src/main/resources/wsdl/CubiksCallBackService.wsdl</wsdl>
                        <extraargs>
                            <extraarg>-b</extraarg>
                            <extraarg>${basedir}/jaxws-bindings.xml</extraarg>
                            <extraarg>-b</extraarg>
                            <extraarg>${basedir}/jaxb-bindings.xml</extraarg>
                            <extraarg>-exsh</extraarg>
                            <extraarg>true</extraarg>
                            <extraarg>-p</extraarg>
                            <extraarg>com.cubiks.ws.callback</extraarg>
                            <extraarg>-wsdlLocation</extraarg>
                            <extraarg></extraarg>
                        </extraargs>
                    </wsdlOption>
                </wsdlOptions>
            </configuration> …
Run Code Online (Sandbox Code Playgroud)

java cxf wsdl2java jaxb maven

30
推荐指数
3
解决办法
3万
查看次数

将xsd导入wsdl

这是我目前的配置:

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://stock.com/schemas/services/stock"
    xmlns:tns="http://stock.com/schemas/services/stock"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"  targetNamespace="http://stock.com/schemas/services/stock">

<xsd:element name="Stock">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="ticker" nillable="true" type="xsd:string"/>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="quotes" nillable="true" type="Quote"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:complexType name="Quote">
    ........
</xsd:complexType>
.......
<xsd:element name="gethighBetaStockResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="stock" ref="Stock" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)

WSDL

<?xml version="1.0" encoding="UTF-8"?><definitions targetNamespace="http://stock.com/schemas/services/stock/wsdl"
    .....xmlns:external="http://stock.com/schemas/services/stock"
<import namespace="http://stock.com/schemas/services/stock" location="Stock.xsd" />
<message name="getStockQuoteResp">
    <part name="parameters" element="external:getStockQuoteResponse" />
</message>
Run Code Online (Sandbox Code Playgroud)

但是,当时ref ="Stock"更改为type ="Stock",wsdl2java开始给出类型{http://stock.com/schemas/services/stock}Stock被引用但未定义.

不知怎的,它似乎是wsdl和xsd导入之间的冲突 - 但我无法解决它.帮助是值得赞赏的.

xsd wsdl web-services wsdl2java

28
推荐指数
2
解决办法
11万
查看次数

如何使用Axis WSDL2Java生成的文件?

我使用WSDL2Java转换器从WSDL生成Java文件,但我不知道如何使用这些文件的服务,因为没有示例.我正在实施客户端.

java axis wsdl2java

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

从WSDL文件生成Web服务

我想从WSDL文件生成Web服务类.我希望服务器端代码不是客户端.wsimport创建客户端.您使用哪个工具从WSDL文件创建服务器端代码?

java wsdl wsdl2java

20
推荐指数
3
解决办法
6万
查看次数

cxf-codegen-plugin不会生成源

我正在尝试使用cxf-codegen-plugin从我的wsdl文件生成源代码.在调用wsdl2java手册时,会生成所需的类,但在使用mvn generate-sources时没有任何反应,我收到消息"项目无需目标".直接调用插件没有帮助.

我朋友的提取物如下:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/MyServiceInterface.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java cxf wsdl2java maven

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

自定义包名称cxf-codegen-plugin

想象一下这个场景.

我有一个带有命名空间a/b/c的wsdl文件,它导入另一个命名空间为m/n/o的wsdl.不幸的是,它们都在其中定义了相同的ComplexTypes XYZ.现在,当我使用cxf-codegen-plugin生成Java代码并使用自定义包名"com.qsrs.uvw"时,在生成的最终代码中只保留一个类.有人可以帮帮我吗?

java wsdl cxf wsdl2java maven

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

WSP0075:策略断言"TransportBinding"被评估为"未知".为什么?

我是一个我无法控制的SOAP服务的客户端(在.NET中实现).该服务提供WSDL.我使用Apache CXF从WSDL生成java客户端(具体来说,我使用的是Maven的cxf-codegen-plugin,它使用了wsdl2java).

但是,当我实例化生成的服务类时,会记录以下警告:

Sep 04, 2014 5:18:00 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector]  selectAlternatives
WARNING: WSP0075: Policy assertion "{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}TransportBinding" was evaluated as "UNKNOWN".
Sep 04, 2014 5:18:00 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector]  selectAlternatives
WARNING: WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".
Run Code Online (Sandbox Code Playgroud)

但是客户端工作正常 - 我使用该服务没有任何问题.但是,我对这些错误感到困惑.

错误是关于WSDL中的这个安全策略,我认为它说它无法理解:

<wsp:Policy wsu:Id="soap11_policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:TransportToken>
            <wsp:Policy>
              <sp:HttpsToken RequireClientCertificate="false"/>
            </wsp:Policy>
          </sp:TransportToken>
          <sp:AlgorithmSuite>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Strict/>
            </wsp:Policy>
          </sp:Layout>
        </wsp:Policy>
      </sp:TransportBinding>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>
Run Code Online (Sandbox Code Playgroud)

但据我所知,这是一个完全普通的政策,并没有什么不寻常之处.当然应该理解?我该如何修复此警告?

为了记录,这里是如何调用wsdl2java(摘自pom.xml).

-exsh trueARG和cxf-rt-bindings-soap …

wsdl cxf wsdl2java jax-ws soap-client

15
推荐指数
3
解决办法
2万
查看次数

标签 统计

wsdl2java ×10

java ×8

wsdl ×6

cxf ×5

maven ×3

jax-ws ×2

axis ×1

axis2 ×1

eclipse ×1

jaxb ×1

soap-client ×1

stub ×1

web-services ×1

webservice-client ×1

xsd ×1