当前位置: 首页 > 面试题库 >

没有WSDL文档文件的JAX-WS客户端

尹光辉
2023-03-14
问题内容

我正在使用webservice soa,使用netbeans(jax-
ws),我使用netbeans自动生成客户端,并且一切运行良好,但是我看到在客户端运行时wsdl始终在下载。

在生产中,我不想公开wsdl,并且我试图修改客户端,因为不需要wsdl,我的所有意图都是错误的,我发现了这一点:

WebService_Service svc = new WebService_Service(
  null,
  new QName("http://www.example.com/ws", "WebService"));
WebService port = svc.getPort(WebService.class);
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext()
  .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
    "http://www.example.com/real_endpoint_url_goes_here");

但是当执行第一行时,我发现此异常:

Message: El contenido no está permitido en el prólogo.
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.wrapException(Unknown Source)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(Unknown Source)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextContent(Unknown Source)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextElementContent(Unknown Source)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.hasWSDLDefinitions(Unknown Source)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source)
    at javax.xml.ws.Service.<init>(Unknown Source)

有什么想法可以忽略wsdl吗?


问题答案:

最后,我使用CXF库,并使用Paul Vargas的答案实现:

没有WSDL文档文件

此解决方案需要客户端生成。

QName qname = new QName("http://thenamespace", "FooService");
FooService service = new FooService(null, qname); // null for ignore WSDL
Foo port = service.getFooPort();
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext()
    .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
    "http://foo.com/soap/fooBean");

// Use the service
String result = port.doSomething(param);

使用标准的颚爪,此解决方案无效,CXF是必需的。



 类似资料:
  • 与RPC样式一样,可以在文档样式中创建JAX-WS示例。 为此,您只需要在服务接口中更改一行。 需要将用于注释来代替。下面我们来看看: 文件: HelloWorld.java - 现在让我们看一下文档样式中JAX-WS的完整示例。打开 Eclipse ,创建一个Java工程:jaxwsdocument,并创建个文件: HelloWorld.java HelloWorldImpl.java Publ

  • 我有一个JAX-WS导入的WSDL客户机。当我尝试连接到webserviceendpoint时,JAX-WS客户端尝试加载WSDL。为什么? 我不想在我的项目中存储WSDL, 我不想再次从webservice URL加载WSDL? 问题: 有机会绕过这种行为吗? 如何在运行时添加webserviceendpointURL? 添加具有相同QName和端口名的端口失败,因为我无法添加相同的QName和

  • 问题内容: 错误 我在Java项目中使用wsimport来生成三个SOAP Web服务的源。前两个可以正常工作:我使用JAX-WS Maven插件来获取WSDL文件并生成相应的Java源文件。 对于一个Web服务,此操作失败。我收到以下错误: 罪犯 此WSDL文件与有效文件之间的区别在于错误消息中指出的行(第80、127和142行): 注意:wsdl文件的根元素定义“ s”名称空间,因此: 我尝试

  • 问题内容: 我尝试使用JAX-WS检索客户端IP,我曾经使用过: 我在要求中得到一个,mc不为空。 我的问题是,因为我使用的是Java独立应用程序,所以要使用哪个JAR ? 谢谢 问题答案: 如何获取jax-ws服务的Web服务客户端地址取决于您是否: 将Web服务作为servlet运行(在Java EE容器中),或者 将Web服务作为独立应用程序运行(Java SE 6或7)。 Servlet

  • 问题内容: 问题是我需要从提供的文件中构建Web服务客户端。我已将此文件存储在本地文件系统上,并且在将WSDL文件保留在正确的文件系统文件夹中的同时,一切都很好。当我将其部署到服务器上或从文件系统文件夹中删除WSDL时,代理找不到WSDL并引发错误。我已经在网上搜索过,但发现了以下帖子,但仍无法使它起作用: JAX-WS从jar中加载WSDL http://www.java.net/forum/t

  • 如果有一个相当大的模式在多个Web服务中使用,那么我想将XSD编译与WSDL编译分开。在一个简化的示例中,一步编译可以: 编译xsd并使用生成的剧集文件不起作用: 那么如何在wsimport中使用预编译的模式呢? 附录:在另一个模式中使用该剧集可以工作,并避免新的编译 (d3.jar包含来自模式 3 模式 3.episode 的生成类作为 META-INF/太阳-jaxb.episode): 没有