我试图以API文档建议的方式关闭导入WSDL4J(1.6.2)中的文档:
wsdlReader.setFeature("javax.wsdl.importDocuments", false);
Run Code Online (Sandbox Code Playgroud)
实际上,它会停止导入使用wsdl:import标记声明的XML模式文件,但会停止导入使用xs:import标记声明的文件.
以下代码片段[请参阅信函末尾]以获取示例文件
http://www.ibspan.waw.pl/~gawinec/example.wsdl
返回以下异常:
javax.wsdl.WSDLException: WSDLException (at /definitions/types/xs:schema):
faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced
at 'EchoExceptions.xsd', relative to
'http://www.ibspan.waw.pl/~gawinec/example.wsdl'.:
java.io.FileNotFoundException: This file was not found:
http://www.ibspan.waw.pl/~gawinec/EchoExceptions.xsd
at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseTypes(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at IsolatedExample.main(IsolatedExample.java:15)
Caused by: java.io.FileNotFoundException: This file was not found:
http://www.ibspan.waw.pl/~gawinec/EchoExceptions.xsd
at com.ibm.wsdl.util.StringUtils.getContentAsInputStream(Unknown Source)
... 10 more …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种不在安装时执行插件的方法.更具体地说,我的方案如下:
任何和所有的帮助将不胜感激!
我有一个由.NET生成的wsdl,我试图在java应用程序中使用它.为此,我尝试使用CXF Wsdl2Java工具.问题是当工具运行时,它会抛出一个jaxb异常:
Thrown by JAXB: Two declarations cause a collision in the ObjectFactory class.
Run Code Online (Sandbox Code Playgroud)
我知道我可能需要创建一个自定义绑定文件来在构建时重命名对象,但我不知道从哪里开始.如何找出wsdl中的哪些对象导致问题?
(如果异常实际上说哪些元素导致了命名冲突,那似乎会很好)
我有一组使用wsdl2java(Axis 1.4)创建的类,我正在寻找一种方法来解组和编组来自/到String和Object的数据.我编写了一个JAXB unmarshaller,它适用于我们的一些较新的内部对象,因为我们使用xjc来创建类,但没有时间转换旧的轴类,需要为代码找到一个marshal/unmarshal解决方案. .
请有人指点我的方向.
谢谢!
我编写了一个WSDL,我想生成java类.
我为maven2 使用cxf-codegen-plugin,但是我在Eclipse中遇到以下验证错误:
生命周期配置未涵盖插件执行:org.apache.cxf:cxf-codegen-plugin:2.2.7:wsdl2java(执行:generate-sources,phase:generate-sources).
有人可以帮我解决这个问题吗?或提出另一种解决方案
我想开发一个测试Web服务的应用程序,它将使用提供的WSDL中的参数自动生成JSF表单.
WSDL URL由用户提供,在解析之前我不知道操作的名称.我希望应用程序完成解析后的操作及其参数,并自动生成相应的Java Bean,我将使用它来生成JSF表单.
我测试了CXF和JAX-WS,但我认为他们需要在生成Java bean之前知道操作名称.如何透明地为任何WSDL生成Java Bean?手动运行wsdl2java不是解决方案.
尽管启用了Web服务支持,但是在工具-> WebServices中看不到“ 从WSDL生成Java代码 ”菜单项。我需要为此安装任何插件或其他东西吗?
我使用apache-cxf的wsdl2java命令为以下服务创建了客户端存根. http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
然后我调用如下getWeatherInformation()方法.
Weather weatherService = new Weather();
WeatherSoap weatherSoap = weatherService.getWeatherSoap();
ArrayOfWeatherDescription result = weatherSoap.getWeatherInformation();
Run Code Online (Sandbox Code Playgroud)
我已经读过cxf客户端是线程安全的.但我怀疑WeatherSoap在多个线程中使用相同的实例是否安全?或者我应该/可以使用Weather多个线程的类实例吗?谢谢.
编辑:
Weather或WeatherSoap服务所有REST请求. 我想对CUCM DB进行SQL查询.我使用Maven jaxb2插件从WSDL生成Java类,但Cisco AXL docs建议使用wsdl2java.我有很多带有Req/Res结尾的Java类(据我所知,请求和响应).这是我的代码:
public class CUCMDatabaseConnector extends WebServiceGatewaySupport{
private String SOAP_ACTION = "CUCM:DB ver=10.5";
public void updateData(){
String END_USERS_REQUEST = REQUEST,
AXLurl = "https://" + properties.getCurrentCUCM_IP() + ":8443/axl/";
ExecuteSQLQueryReq sqlRequest = new ExecuteSQLQueryReq();
sqlRequest.setSql(END_USERS_REQUEST);
WebServiceTemplate template = getWebServiceTemplate();
template.setMessageSender(NullHostnameVerifier.getMessageSender());
ExecuteSQLQueryRes sqlResponse = (ExecuteSQLQueryRes) template
.marshalSendAndReceive(
AXLurl,
sqlRequest,
new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
TransportContext context = TransportContextHolder.getTransportContext();
HttpUrlConnection connection = (HttpUrlConnection) context.getConnection();
//adding required headers
connection.addRequestHeader( "SOAPAction", SOAP_ACTION);
connection.addRequestHeader("Authorization", autenString);
}
} …Run Code Online (Sandbox Code Playgroud) 当我指定每个文件时,我能够使用带有相对wsdlLocation的生成类,例如
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/sample.wsdl</wsdl>
<wsdlLocation>classpath:wsdl/sample.wsdl</wsdlLocation>
</wsdlOption>
</wsdlOptions>
相反,我想使用<wsdlRoot>所以我不需要指定生成类的每个wsdl.
例如
<wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
<includes>
<include>*.wsdl</include>
</includes>
这适用于为目录中的每个wsdl生成类,但是,生成的类中的wsdlLocation是wsdl在我的机器上的绝对路径.我想要一个相对路径,所以代码更便携.使用wsdlRoot时是否可以指定相对wsdlLocation?
谢谢