草庐IT

xml - Jax-WS - 从请求 XML 中删除空标签

我正在尝试使用提供商公开的Web服务。提供者在他的末端有一个严格的检查请求xml不应该包含没有值的标签。我正在使用Jax-WS。如果我没有在特定对象中设置值,它将作为空标签发送并且标签存在。PFB示例说明了我的问题。客户端XML:45DannyNAGSEK在此,没有给出IpAddress的值,因此发送了空标签。因此请告诉我们需要做什么来删除请求xml中的空标记。Handlerchain是唯一的解决方案吗?谢谢,纳文。 最佳答案 注意:我是EclipseLinkJAXB(MOXy)JAXB(JSR-222)的领导和成员专家组。默认情况

java - 为什么 JAX-WS 导出的对象需要默认构造函数?

JAX-WS要求传输的所有类都具有默认构造函数(无参数构造函数)。我不明白这个要求,因为客户基于WSDL创建他们自己的类。IMO这一要求仅对那些用作Web服务输入参数的类有意义。有谁知道如何规避该要求? 最佳答案 当您使用JAX-WS时,您正在使用JAXB实现将java对象序列化为XML。因此,“问题”在于JAXB的工作方式。要使用JAXB,您需要创建一个JAXBContext,将所有可以编码/解码的类传递给它。创建上下文时,JAXB将检查所有给定的类是否具有无参数构造函数。如果这些类中至少有一个没有这种构造函数,则不会创建上下文。

xml - JAX RS - JSON 和 XML 循环/循环引用错误

我正在使用JAXRS创建一个REST网络服务,使用通常的@Path、@GET、@Produces({"application/json,"application/xml"})。我将返回一个POJO作为响应,它根据请求的类型以JSON或XML的形式发送。它工作正常,直到我添加了与另一个实体的多对多关系。这种关系是双向的。我正在使用JBossAS7。我添加了Jackson的@JsonManagedReference和@JsonBackReference但无济于事。如何克服这个问题?我这样部署我的JAXRS:-javax.ws.rs.core.Application1javax.ws.rs.

java - 使用 JAXB 的 JAX-WS 请求验证

在JAX-WS中,要验证传入请求,其中一种方法是使用@SchemaValidation,如以下链接中所建议。JAX-WSandXSDValidation但是我使用的应用服务器(WAS7)还不支持@SchemaValidation。(如果WAS7不支持此注释,请纠正我)所以我正在寻找其他选项,例如实现一个处理程序来验证传入的请求。在处理程序或端点类本身中,我可以创建JAXBContext并使用JAXBvalidator。由于JAX-WS内部使用JAXB,我是否需要显式创建JAXBContext或者它是否可以作为资源/注释使用?这是在JAX-WS中实现验证的好方法吗?(在没有@Schema

java - 使用 Jersey JAX-RS 时,有没有办法区分作为 null 发送的字段和根本不发送的字段?

我正在使用JerseyJAX-RS和Jackson(用于序列化/反序列化)来实现一组REST服务。当调用者执行更新操作(例如PUT)时,我通常遵循这样的约定:在更新目标时忽略请求中发送的空字段。仅更新设置为实际值的字段。但是,如果我可以区分作为null发送的字段和根本没有发送的字段,我会更喜欢它,这样我就知道要清除明确作为null发送的字段。我可以发明一种方法来实现这一点,但我想知道框架中是否有任何可用的方法。这似乎是一个常见的要求。 最佳答案 如果您使用JSONPOJO支持(初始化参数com.sun.jersey.api.json

java - JAX-RS 默认的@Produces

是否有在所有JAX-RS/资源上默认使用@Produces注释的应用程序范围的方法?我有很多生成Web服务的类。与其将@Produces({"application/json","application/xml"})放在它们中的每一个上,不如将其放在一个中心位置。这样我就可以在一个地方添加future的生产者,而不必修改每个类。我目前正在使用带有Jetty的Resteasy。 最佳答案 我知道这是一个有点老的问题,但它可能对像我这样的其他人有帮助。作为ccleve解决方案的补充,您也可以使用接口(interface)。由于多重继承,

java - Openshift 中的 Jersey JAX-RS REST 404,在本地 Tomcat 中运行良好

我是JerseyREST的新手。我按照教程http://javapapers.com/java/restful-web-services-with-java-jax-rs-using-jersey/.它在Tomcat7上本地运行良好。但是当我将它部署到Openshift中时,我只是收到404notfound。这是我的web.xmlJerseyRESTServiceorg.glassfish.jersey.servlet.ServletContainerjersey.config.server.provider.packagescom.market.ws1JerseyRESTServic

java - 将 JAX-WS 集成到 Spring Boot

我有一个现有的API,它同时具有JAX-RS和JAX-WS。我想将它迁移到SpringBoot应用程序中。我为JAX-RS部分所做的是注册该类:@GET@Path("/ping")@Produces("text/plain")Stringping();进入扩展ResourceConfig的JerseyConfig。这是来自同一类的JAX-WS的示例:@WebMethod(operationName="Ping",action="ping-app")Stringping();由于我使用了JAX-RS和JAX-WS的引用实现,我希望将它迁移到SpringBoot应该很容易。我已经轻松完成了

java - JBOSS 6 部署问题,带有 Jersey 的 JAX-RS

我的问题是:问题1.如何在JBOSS中启用包扫描,以便它可以知道在war文件中的何处查找实现类和提供程序(使用@Provider注释的提供程序)?Q2.为什么我的过滤器没有被应用类注册,而我必须在web.xml中注册?场景我使用Jersey创建了一个Jax-RS网络服务并将其部署在JBOSS-6中,首先我遇到了一个错误,该错误描述了JBOSS将无法扫描我在web.xml中提供的包找到我的Restweb服务实现。所以解决方法是创建一个Application类,(我无缘无故地阻止自己使用Jersey本身提供的ResourceConfig)并在getClasses中注册我的WebServic

java - 我可以使用自定义预分派(dispatch)、后分派(dispatch)和错误处理程序代码来包装所有 JAX-RS 请求吗?

我使用javax.ws.rs.Path注释将许多类公开为JAX-RS请求“处理程序”。我想在每个请求之前和每个请求之后添加某些操作。此外,我需要创建一个全局应用程序范围的异常处理程序,它将捕获这些处理程序和协议(protocol)抛出的所有内容。是否可以使用标准JAX-RS实现这一点,而无需创建继承自com.sun.jersey.spi.container.servlet.ServletContainer的自定义类(我正在使用Jersey)。 最佳答案 您还可以使用ExceptionMappers。该机制捕获您的服务抛出的异常并将其