Tag: resteasy

处理JAX-RS REST API URI版本的最佳方法

我在我的search首先在stackoverflow我无法find任何答案有关我的问题。 我所能find的只是与REST uridevise有关的问题。 我的问题在后端。 假设我们有两个不同版本的REST URI http://api.abc.com/rest/v1/products http://api.abc.com/rest/v2/products 在后端(服务器端代码)上遵循的最佳方法是在基于版本的这两套api上对现有类进行正确的路由,可pipe理性和重用? 我曾经想过使用不同的@Path注释来定义资源类,例如,分别在包的ProductsResource类中分别包含v1和v2的包,define package com.abc.api.rest.v1.products; @Path("/rest/v1/products") public class ProductsResource {…} package com.abc.api.rest.v2.products; @Path("/rest/v2/products") public class ProductsResource {…} 然后有基于版本的实现逻辑。 这种方法的问题是,当我们只是从一组API中改变一个特定的资源api时,我们不得不将其他类复制到v2包中。 我们可以避免吗? 如何写一个自定义注释说@Version&支持它的版本的值? 现在无论是v1还是v2,这两个请求都会转到相同的资源类。 说例如 package com.abc.api.rest.products; @Path("/rest/{version: [0-9]+}/products") @Version(1,2) public class ProductsResource {…} 更新: Jarrod提供了一个API版本控制的build议来处理标题中的版本。 这也是一种方法,但是我期待在遵循基于URI的版本控制时使用最佳实践

Java 8 LocalDate Jackson格式

对于java.util.Date,当我这样做 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy") private Date dateOfBirth; 然后在我发送JSON请求 { {"dateOfBirth":"01/01/2000"} } 有用。 我应该如何做到这一点Java 8的LocalDate字段? 我试过了 @JsonDeserialize(using = LocalDateDeserializer.class) @JsonSerialize(using = LocalDateSerializer.class) private LocalDate dateOfBirth; 它没有工作。 有人可以让我知道什么是正确的方法来做到这一点.. 以下是依赖关系 <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>jaxrs-api</artifactId> <version>3.0.9.Final</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>com.wordnik</groupId> <artifactId>swagger-annotations</artifactId> <version>1.3.10</version> </dependency> <dependency>

不能从START_OBJECT标记反序列化java.util.ArrayList的实例

我试图发布自定义对象的List 。 请求正文中的我的JSON是这样的: { "collection": [ { "name": "Test order1", "detail": "ahk ks" }, { "name": "Test order2", "detail": "Fisteku" } ] } 处理请求的服务器端代码: import java.util.Collection; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path(value = "/rest/corder") public class COrderRestService { @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response postOrder(Collection<COrder> orders) { StringBuilder stringBuilder […]

RESTEasy还是Jersey?

我有一个RESTFul web服务的要求。 由我的团队决定是否使用Jersey或Restlet或RESTEasy或其他方法。 在省略其他框架之后,我们无法在RESTEasy和Jersey之间进行select。 由于两者似乎差不多,我们应该考虑什么呢? 客户端API应该简单而丰富。 我们已经在生产中使用JBoss 5.1了。 请让我知道泽西岛和RESTEasy的利弊。 除了它来自JBoss之外,我无法find泽西岛上任何有效的点。

REST – 使用JSON的HTTP Post Multipart

我需要接收一个只包含2个参数的HTTP Post Multipart: 一个JSONstring 二进制文件 哪个是设置正文的正确方法? 我要使用Chrome REST控制台testingHTTP调用,所以我想知道是否正确的解决scheme是为JSON参数和二进制文件设置“标签”键。 在服务器端,我使用了Resteasy 2.x,我将阅读这样的Multipart主体: @POST @Consumes("multipart/form-data") public String postWithPhoto(MultipartFormDataInput multiPart) { Map <String, List<InputPart>> params = multiPart.getFormDataMap(); String myJson = params.get("myJsonName").get(0).getBodyAsString(); InputPart imagePart = params.get("photo").get(0); //do whatever I need to do with my json and my photo } 这是要走的路吗? 检索我的JSONstring是否正确使用“myJsonName”键来标识特定的内容处置? 有没有其他方法可以在一个HTTP多方请求中接收这两个内容? 提前致谢

如何selectJersey,Apache Wink和JBoss RESTEasy?

我刚刚听说了Apache Wink ,我想知道与Jersey或JBoss RESTEasy相比有什么不同。 其他两个不能做什么呢? 我们一直在使用泽西来进行一些内部项目,主要是因为它很简单,但我无法弄清楚是什么让这两个更好,我会考虑切换。 有没有人有任何利用这些填充的利基?

CreateProcess error = 206,运行main()方法时文件名或扩展名太长

我在eclipse helios中有这个错误: 执行命令行发生exception。 无法运行程序“C:\ Program Files(x86)\ Java \ jre6 \ bin \ javaw.exe”(目录“C:\ Users \ motiver \ helios_workspace \ TimeTracker”):CreateProcess error = 206,文件名或扩展名是太长 我研究了一下,但在Google App Engine上工作时,大部分问题都与DataNucleus有关。 但是我没有使用与Google App Engine远程相关的任何内容。 我正在用JBOSS 6上的Servlet 3.0做一个小项目。我正在使用Hibernate 4.1.2 for ORM和RESTEasy来公开Web服务。 我创build了一个具有main()方法的util文件,该方法基本上可以删除并重新创build模式。 当我需要一个干净的数据库进行testing时,我运行main()方法。 它在Tomcat 7上运行良好,但当我转移到JBoss 6时,它停止工作。 任何提示或解决scheme将不胜感激。

问题Resteasy 3.09 CorsFilter

我尝试使用Resteasy 3.0.9中提供的新CorsFilter 。 我在本页面的底部find了一个示例: 使用JAX-RS / RESTEasy实现CORS的Ajax请求 如果我在Application子类的方法getSingletons()定义了这个filter,那么我的资源就不会被扫描了。 这意味着没有资源将被发现,并发生以下错误: javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures 在接下来的页面上,我发现了一个描述: javax.ws.rs.NotFoundException:找不到完整path的资源错误发生 但基本上,这个部署选项的作用是扫描应用程序的注解@Path,@Provider等。 原因是JAX-RS将首先分别在重写的getClasses()和getSingletons()中查找类和对象。 如果返回空集,则告诉JAX-RS进行扫描(按照规范)。 因此,如果我覆盖getSingletons()方法,JAX-RS不会执行扫描吗? 是否有另一种方式来configuration此CorsFilter并启用资源扫描?

PersistenceContext EntityManager注入NullPointerException

我有一个包含以下内容的战争: META-INF/MANIFEST.MF WEB-INF/classes/META-INF/persistence.xml WEB-INF/classes/com/test/service/TestServlet.class WEB-INF/classes/com/test/service/TestEntity.class WEB-INF/classes/jndi.properties WEB-INF/classes/postgresql-ds.xml WEB-INF/jboss-web.xml WEB-INF/web.xml index.jsp persistence.xml中: <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="test"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/TestDS</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit> </persistence> web.xml中: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Test Web Application</display-name> […]