Tag: jax rs

内省泽西资源模型泽西2.x.

我编写了自己的扫描程序来浏览我的JAX-RS资源,并使用jersey-server-1.18.1打印出方法名称和路径。 问题是当我将相同的代码迁移到2.16(将包名称从com.sun.*更改为org.glassfish.* )时,它将无法正常工作。 深入挖掘我发现那些必需的jersey-server类不久就公开了。 谁知道原因? 如何将我的代码从1.x迁移到2.x? 实际上没有关于此迁移的文档。 所有帮助赞赏! 下面是1.x的代码 import com.wordnik.swagger.annotations.ApiOperation; import com.sun.jersey.api.model.AbstractResource; import com.sun.jersey.api.model.AbstractResourceMethod; import com.sun.jersey.api.model.AbstractSubResourceLocator; import com.sun.jersey.api.model.AbstractSubResourceMethod; import com.sun.jersey.server.impl.modelapi.annotation.IntrospectionModeller; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * […]

DropWizard Auth领域

在DropWizard中,我可以像这样设置基本身份validation(在Application#run impl中): BasicAuthProvider authProvider = new BasicAuthProvider(authenticator, “SECRET_REALM”); environment.jersey().register(authProvider); 我想知道String realm (“ SECRET_REALM ”)的重要性是什么? 从一般安全概念来看,我理解一个“领域”是一个存储用户和角色/权限的地方(数据库,目录,文件,密钥库等)。 一个领域在DropWizard中意味着什么,以及在BasicAuthProvider中指定它的意义是什么? 它是否在引擎盖下创造了这个领域的东西?

在REST / Java中,如果我的对象为null,我应该返回什么?

我有一个简单的POJO,我用REST注释注释如下: @GET @Path(“/domains/{domainid}”) @Override public Domain getDomain(@PathParam(“domainid”) UUID domainID) throws Exception { logger.info(“Retrieving domain “+ domainID); Domain d = null; try { d = MyClient.getDomains().get(domainID.toString()); logger.debug(“Returning “+d.getName()); } catch (Exception e) { logger.error(“Could not retrieve domain”, e); } return d; } 请注意,包含d.getName()的日志语句实际上可以抛出一个NPE,然后捕获并记录该NPE。 这不是很漂亮,但这也不是重点。 最终d是否有价值,我将其归还。 在空值的情况下,我的客户端收到HTTP 204状态代码。 这是wget显示的内容: HTTP request sent, awaiting response… 204 No Content […]

线程“main”中的exceptionjava.lang.NoClassDefFoundError:无法初始化类com.sun.jersey.core.header.MediaTypes

我正试图经营一个jersey客户并面对这个问题。 WS类: import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path(“/hello”) public class HelloWorldService { @GET @Path(“/vip”) @Produces(MediaType.APPLICATION_JSON) public Response getMsg(@QueryParam(“msg”) String msg) { String output = “Jersey say : ” + msg; return Response.status(200).entity(output).build(); } } 客户类: import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; public class JerseyClientGet { public static void […]

在Jax Rs / Appfuse应用程序中获取HttpServletRequest?

我使用AppFuse创建了一个基本的应用程序shell,并按照AppFuse教程使用Jax-RS创建了一个简单的RESTful服务。 这很好用。 对http://localhost:8080/services/api/persons的调用将Person对象的集合作为具有正确数据的Json格式字符串返回。 我现在想要从Appfuse公开的RESTful服务中访问ServletRequest和ServletResponse对象(使用另一个需要这些对象的库)。 我认为应该通过添加@Context注释来实现,例如,遵循此StackOverflowpost和此论坛post 。 但是如果我添加@Context标记(见下文),它编译得很好但在重新启动服务器时抛出exception(附在底部)。 这是@WebService的声明: @WebService @Path(“/persons”) public interface PersonManager extends GenericManager { @Path(“/”) @GET @Produces(MediaType.APPLICATION_JSON) List read(); … } 这是实现类,我想我会调用@Context注释: @Service(“personManager”) public class PersonManagerImpl extends GenericManagerImpl implements PersonManager { PersonDao personDao; @Context ServletRequest request; // Exception thrown on launch if this is present @Context ServletContext context; // Exception thrown on launch […]

将REST调用中的@PathParam值存储在列表或数组中

我的function看起来像这样: @PUT @Path(“property/{uuid}/{key}/{value}”) @Produces(“application/xml”) public Map updateProperty(@Context HttpServletRequest request, @PathParam(“key”) String key, @PathParam(“value”) String value, @PathParam(“uuid”) String uuid) throws Exception { … } 我必须修改它,因此它接受来自REST调用的无限(或许多)键值对列表,例如 @Path(“property/{uuid}/{key1}/{value1}/{key2}/{value2}/{key3}/{value3}/…”) 是否可以将它们存储在数组或列表中,所以我没有列出几十个@PathParams和参数,以避免这种情况: @PathParam(“key1”) String key1, @PathParam(“key2”) String key2, @PathParam(“key3”) String key3,

Json Mapping Exception无法反序列化START_ARRAY令牌中的实例

我正在尝试将我的json请求解析为我的模型。 我不知道这段代码有什么问题。 json的语法在Java模型上看起来也是正确的和注释。 我不知道为什么我会收到如下错误: Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of ParametersType out of START_ARRAY token (through reference chain: Document[“parameters”]) Java模型: @JsonIgnoreProperties( ignoreUnknown = true ) public class Document { @XmlElement( required = true ) @JsonProperty( “templateId” ) protected String templateId; @JsonProperty( “parameters” ) @XmlElement( required = true ) protected ParametersType parameters; @JsonProperty( “documentFormat” […]

JAX-RS不适用于Spring Boot 1.4.1

我正在尝试使用Spring Boot 1.4.1.RELEASE开发一个简单的基于JAX-RS的Web服务。 但得到这个例外 – java.lang.IllegalStateException: No generator was provided and there is no default generator registered at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:308) ~[hk2-api-2.5.0-b05.jar:na] at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.create(ServiceLocatorFactoryImpl.java:268) ~[hk2-api-2.5.0-b05.jar:na] at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138) ~[jersey-common-2.23.2.jar:na] at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:123) ~[jersey-common-2.23.2.jar:na] at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:330) ~[jersey-server-2.23.2.jar:na] at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:392) ~[jersey-container-servlet-core-2.23.2.jar:na] at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) ~[jersey-container-servlet-core-2.23.2.jar:na] at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) ~[jersey-container-servlet-core-2.23.2.jar:na] 这是我的计划详情 – POM.xml中包含的依赖项 – org.springframework.boot spring-boot-starter-jersey org.springframework.boot spring-boot-starter-test test 这里是JerseyConfig文件 – package com.test.main; import […]

Spring Restfull Jax-RS注释支持

我有以下class和web.xml文件。 spring框架是否支持jax-rs注释,例如@PATH , @PATH @PUT , @PATH @Consumes ……等。 换句话说,我可以使用@PATH代替@RequestMapping Java的: import org.springframework.stereotype.Controller; import javax.ws.rs.PUT; import javax.ws.rs.Path; @Controller @Path(“/register”) public class RegisterServices { @PUT @Path(“/create”) @Consumes(MediaType.APPLICATION_JSON) @Produces({“application/json”}) public Response create(@Context HttpServletRequest requestContex, @HeaderParam(“Authorization”) String authorization, String xMsisdn, String param) {} } web.xml中 org.springframework.web.context.ContextLoaderListener Jersey REST Service /rest/* Jersey REST Service org.springframework.web.servlet.DispatcherServlet 1

如何让@RolesAllowed注释适用于我的Web应用程序?

我使用Backbone.js,Bootstrap,NetBeans IDE 8.0,Java EE 7,JDK 8,WildFly服务器8.1.0,JBoss RESTEasy(resteasy-jaxrs-3.0.8),JBoss 2.2.22,JBoss EJB 3制作Web应用程序。 我(相对)是Web开发的新手,因此我刚开始掌握了很多基本概念和技术。 我正在尝试将用户和角色的权限系统构建到Web应用程序中,但我似乎无法使@RolesAllowed注释在我的RESTful Web服务中工作。 我已经在这个问题上工作了几天。 我有一个名为UserResource.java的RESTful资源(Java Enterprise / Session Bean?),在这里我有一个方法create来为应用程序创建一个新用户: import java.net.URI; import java.security.Principal; import java.util.List; import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.ws.rs.*; import javax.ws.rs.core.*; import org.jboss.ejb3.annotation.SecurityDomain; @Stateless @SecurityDomain(“other”) @Path(“/user”) public class UserResource { @EJB(name = “UserServiceImp”) UserService userService; @Context private UriInfo uriInfo; […]