- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个通过 Jetty 公开 SOAP API 的 Java 应用程序。我可以成功访问 WSDL 并伪造请求,但发送的 webparam 始终为空。我不知道如何调试这个问题。这里我有一些请求中涉及的函数的片段。如果您需要更多信息,我会编辑:
@WebMethod(
operationName = "findEvent"
)
public ServiceEventDto findEvent(
@WebParam(name = "eventId") Long eventId) throws InstanceNotFoundException {
Event event
= EventServiceFactory.getService().findEvent(eventId);
return EventToEventDtoConversor.toEventDto(event);
}
这是请求:
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eve="http://ws.udc.es/event">
<x:Header/>
<x:Body>
<eve:findEvent>
<eve:eventId>0</eve:eventId>
</eve:findEvent>
</x:Body>
提前谢谢您。
最佳答案
我相信问题是您的 SOAP 输入使用 eve
eventId
的命名空间前缀输入元素。
试试这个:
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eve="http://ws.udc.es/event">
<x:Header/>
<x:Body>
<eve:findEvent>
<eventId>0</eventId>
</eve:findEvent>
</x:Body>
我能够在 Jetty 9.4 中使用以下服务提供程序重新创建:
服务端点接口(interface):
package org.example.sampleservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(targetNamespace="http://ws.udc.es/event")
public interface SampleService {
@WebMethod(operationName = "findEvent")
public ServiceEventDto findEvent(@WebParam(name = "eventId") Long eventId) throws InstanceNotFoundException;
}
服务实现:
package org.example.sampleservice;
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
@WebService(endpointInterface = "org.example.sampleservice.SampleService", targetNamespace="http://ws.udc.es/event")
public class SampleServiceImpl implements SampleService {
@Resource
private WebServiceContext ctx;
@WebMethod(operationName = "findEvent")
public ServiceEventDto findEvent(@WebParam(name = "eventId") Long eventId) throws InstanceNotFoundException {
System.out.println("SampleServiceImpl: received eventId " + eventId);
return new ServiceEventDto();
}
}
当我使用您的原始输入 <eve:eventId>0</eve:eventId>
时我观察到以下输出:
SampleServiceImpl: received eventId null
当我使用<eventId>0</eventId>
时我观察到预期的输出:
SampleServiceImpl: received eventId 0
但是,如果您需要接受 <eve:eventId>
您还可以调整 @WebParam
添加targetNamespace
如下:
@WebParam(name = "eventId", targetNamespace="http://ws.udc.es/event") Long eventId
当我以这种方式更改服务提供商时,输出会反转并 <eve:eventId>
不再是null
.
关于java - @WebParam 在 jetty 服务 SOAP 中始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155157/
我正在研究 WSDL 和 JAX-WS,这就是我遇到这个问题的地方。当我在 JAX-WS 中编写服务接口(interface)时,如下所示: @WebService @SOAPBinding(styl
我使用 JAX-WS RI(默认 Java 实现)建立了一个简单的 Web 服务。 我阅读了很多教程,发现 Web 方法的参数是用 WebParam 注释声明的。例如: @WebMethod void
是否可以将枚举传递为 @WebParam在 SOAP网络服务? @XmlEnum public enum TestEnum { TEST; } @WebService public class
我在 web 服务中有一个方法,具有以下签名: @WebResult(name="purchaseId") public int CreatePurchase( @XmlEle
我有一个像这样定义的 Java JWS WebService: @WebService public class Foo { @WebMethod public int foo(@We
我尝试获取接口(interface)方法中方法参数User user 上注释@WebParam 的名称“best_user”。因为它是一个接口(interface),所以以下代码不允许我访问注释: S
我正在尝试使用 (@XmlElement(required=true) 让我的 @webparam 成为强制性的,但生成的 XSD 仍然显示为 minOccurs="0 "。还尝试设置 nillabl
@WebService public interface MyService { public void doStuff( @WebParam(name = "someObjectList") L
我有一个非常简单的方法,我通过 JAX-WS 注释在 WS API 中使用它: @WebMethod public MyResponse sendSingle2( @WebParam(name
我们正在将 JAX-WS 与 JAXB (2.1) 结合使用。 首先,我们创建了链接到 XSD 类型的 Java 类。 然后,使用 CXF (2.1.3)、Spring (2.0.8) 和 JAX-W
我有一个通过 Jetty 公开 SOAP API 的 Java 应用程序。我可以成功访问 WSDL 并伪造请求,但发送的 webparam 始终为空。我不知道如何调试这个问题。这里我有一些请求中涉及的
我已经使用 wsdl2java 生成了代码,它可以与默认的 Java JAX-WS 实现一起正常工作。当我添加 CXF 时,我的应用程序停止工作。我知道这是因为切换 JAX-WS 实现( Why ws
我一直在努力为这个特定主题寻找解决方案: 可以在@webParam 注释中为基于 SOAP/WSDL 的 Web 服务定义默认值吗?我想要的正是下面的结果: 我的 Web 服务中有一个名为 getCu
我有一个带有 Web 方法的 jax-ws Web 服务: @WebMethod void SetCurrentDate(Date date) 在生成的 wsdl 参数中,日期的类型为 xs:date
我正在使用 JAX-WS 构建 Web 服务。我有一个奇怪的问题,即 @WebParam 的注释 @XmlElement(required=true) 在某些 @WebService 类中工作,但没有
我使用 @WebService、@WebMethod 和 @WebParam 注释从 Java 类生成 WSDL。 WSDL 已生成,并包含 @WebService 和 @WebMethod 的输出,
这是我生成 wsdl 的 java 代码: @WebMethod(action = "sendRequest") @WebResult(partName= "message") public Stri
我正在尝试使用 Java 11 中的 wsimport 工具。 我从 Eclipse EE4J 的 Metro 项目获得了 jax-ws 的开源版本,地址为 https://github.com/ec
我正在尝试使用 JBossWS 3.1.2 开发一个 Web 服务,该服务将 HashMap 作为其参数之一。我正在使用这个版本的 JBossWS,因为它是随我正在使用的 JBoss 版本一起分发的。
我在 wsdl 上使用 wsdl2java 生成了类,服务接口(interface)如下所示 @WebService(targetNamespace = "http://www.sii.example
我是一名优秀的程序员,十分优秀!