我正在编写一个胖客户端,它利用SOAP服务来实现某些功能(错误报告等)
我有JAX-WS工作正常,但默认情况下(至少在netbeans中)它每次初始化服务时从远程服务器获取WSDL.我希望这有助于提供一些版本支持等,但这不是我想要的.
我已将wsdllocationarg 添加到wsimport以将生成的类指向本地资源.以下代码段是ApplicationService.java中WSDL资源的URL加载.
baseUrl = net.example.ApplicationService.class.getResource(".");
url = new URL(baseUrl, "service.wsdl");
Run Code Online (Sandbox Code Playgroud)
我很确定在net/example/resources包中指向存储在jar中的资源应该没有问题,并且jar本身按预期构造.但是服务不会加载...具体来说,当我调用ApplicationService.getPort()时,我得到一个NullPointerException;
这可能吗?还是只是一场疯狂的追逐?
我正在尝试使用JDK 6工具为一些SOAP Web服务生成客户端wsimport.WSDL由.NET 2.0应用程序生成.对于.NET 3.X应用程序,它工作正常.
我跑的时候
wsimport -keep -p mypackage http://myservice?wsdl
Run Code Online (Sandbox Code Playgroud)
它显示了几个错误消息,如下所示:
[错误]具有相同名称"mypackage.SomeClass"的类/接口已在使用中.使用类自定义来解决此冲突.线?的HTTP://为MyService WSDL
当我使用Axis 1.4(使用Eclipse WebTools插件)生成Web服务客户端时.
有人知道我该怎么做才能使用这个wsimport工具吗?我真的不明白"类定制"是什么.
在此之前,我想让您知道我已经可以连接到Web服务服务器了.我问这个问题是因为我希望深入了解wsimport生成的客户端是如何工作的.根据我的研究,wsimport使用JAXWS.请注意,我不了解JAXWS.
我使用wsimport生成了我的客户端.我使用的WSDL来自Axis2 Web服务,由Axis2自动生成.下面的类是wsimport的结果:
下 com.datamodel.xsd
DataBeanRequest.javaDataBeanResponse.javaObjectFactory.javapackage-info.java下 com.service
MyWebService.javaMyWebServicePortType.javaMyMethod.javaMyMethodResponse.javaObjectFactory.javapackage-info.java使用上面的类,我可以告诉它com.datamodel.xsd包含Web服务服务器使用的bean(不包括ObjectFactory和package-info).同时,MyMethod和MyMethodResponse也用于设置的web服务方法/操作的请求和响应参数豆.
以下是我的问题:(如果你不知道我的一些问题的答案,你真的不必回答所有问题.:)请随时分享你认为我可能会觉得有用的任何信息.)
我是否正确
MyWebService,它包含一个注释,指的是我用来生成客户端的WSDL的绝对位置.wsdllocation在客户端中指定的相关性是什么?客户如何使用该信息?wsimport命令有一个wsdllocation属性,其中wsdllocation可以指定值.)当我尝试运行"mvn generate-sources"时,这是我的输出:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building gensourcesfromwsdl 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.104s
[INFO] Finished at: Tue Aug 20 15:41:10 BST 2013
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,但没有从wsdl文件生成的java类.
这是我正在运行插件的pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>gensourcesfromwsdl</groupId>
<artifactId>gensourcesfromwsdl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution> …Run Code Online (Sandbox Code Playgroud) 我有以下问题:我正在使用wsimport ant任务来创建一个webservice客户端(对于salesforce.com).一切正常,但生成的类都使用这个奇怪的JAXBElement类用于所有bean属性.
例如:
Run Code Online (Sandbox Code Playgroud)public void setLastName(JAXBElement<String> value) { this.lastName = ((JAXBElement<String> ) value); } public JAXBElement<String> getCountry() { return country; }
我没有将所有类包装在JAXBElement中,而是希望使用setLastName(String newLastName)这样的简单方法.这就是我调用wsimport任务的方式.
<wsimport debug="false" verbose="false" keep="${keep}"
extension="${extension}" destdir="${tmp.metro}"
wsdl="${licensing.wsdl}"
sourcedestdir="${licensingws.generated.src}"
>
<binding dir="${basedir}/etc" includes="${client.binding}"
/>
<arg value="-B-XautoNameResolution" />
</wsimport>
Run Code Online (Sandbox Code Playgroud)
任务以这种方式定义:
有人知道我要设置什么,以便wsimport以我想要的方式生成类吗?非常感谢提前!
我在Java项目中使用wsimport来生成三个SOAP Web服务的源代码.前两个工作正常:我使用JAX-WS Maven插件来获取WSDL文件并生成相应的Java源文件.
一个Web服务失败; 我收到以下错误:
[jaxws:wsimport]
Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl]
parsing WSDL...
src-resolve.4.2: Error resolving component 's:schema'. It was detected that 's:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'. If this is the incorrect namespace, perhaps the prefix of 's:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should …Run Code Online (Sandbox Code Playgroud) 我正在使用'wsimport'从wsdl生成客户端java代码.wsdl在这样的操作定义中有soap:header
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.test.com/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.test.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Test session web service methods.</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.test.com/">
<s:element name="Logon">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="user" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="organisation" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LogonResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="LogonResult" type="tns:LogonResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:simpleType name="LogonResult">
<s:restriction base="s:string">
<s:enumeration value="Ok" />
<s:enumeration value="Error" />
</s:restriction>
</s:simpleType>
<s:element name="Header" type="tns:Header" />
<s:complexType …Run Code Online (Sandbox Code Playgroud) 我为我的客户端Web服务运行wsimport后,构造函数服务(URL,QName,WebServiceFeature [])是未定义的错误.我正在使用JDK 1.6.请帮忙.

我一直在尝试导入以下Web服务:http://soap.genome.jp/KEGG.wsdl with $ {JAVA_HOME}/bin/wsimport:
wsimport -version
JAX-WS RI 2.1.6 in JDK 6
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
parsing WSDL...
[WARNING] src-resolve: Cannot resolve the name 'soapenc:Array' to a(n) 'type definition' component.
line 19 of http://soap.genome.jp/KEGG.wsdl#types?schema1
[ERROR] undefined simple or complex type 'soapenc:Array'
line 19 of http://soap.genome.jp/KEGG.wsdl
(....)
Run Code Online (Sandbox Code Playgroud)
问题来自WSDL还是来自wsimport的实现?我应该使用其他工具吗?
谢谢
皮埃尔
我正在使用NetBeans,我有两个项目:
对于web服务,我使用的是带有混合内容元素的XSD.使用以下代码为JAXB导入添加绑定文件:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc"
jaxb:version="2.0">
<jaxb:globalBindings generateMixedExtensions="true"/>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)
它生成了这段代码:
@XmlMixed
@OverrideAnnotationOf
protected List<Serializable> contentOverrideForED;
Run Code Online (Sandbox Code Playgroud)
我可以使用这个生成的代码,虽然它并不理想.
我的问题在于客户端,我已经为我生成和部署的webservice添加了一个Web服务引用,只在localhost上运行.
使用相同的绑定文件WSDL Customization: External Binding File不会产生content代码,也不会直接使用它作为选项Wsimport,也不会将其用作Jaxb option.我有一种感觉,这种设置在某种程度上被忽视了,但是怎么样?
为什么最初的JAXB生成包括它以及wsimport为什么不使用它?我有点困惑.