Tag: jax rs

在jdk中找不到javax.ws.rs包

我正试图进入JAX-RS。 我的项目jdk设置为1.7.03。 是否必须为JAX-RS(javax.ws.rs)定义注释? 如果没有,我可以在哪里找到它们?

Jersey …如何记录所有exception,但仍然调用ExceptionMappers

我有点束缚……想要我的蛋糕,也吃它。 我想记录我的应用程序抛出的所有exception。 因此,如果有人遇到错误的URL,我想将堆栈跟踪记录到SLF4J。 所以你可能在想,“嘿,这很简单,只需实现exception映射并记录exception。”所以我做了: public class RestExceptionMapper implements ExceptionMapper { private static final Logger log = LoggerFactory.getLogger(RestExceptionMapper.class); /** * {@inheritDoc} */ @Override public Response toResponse(Exception exception) { log.error(“toResponse() caught exception”, exception); return null; } } 如果你这样做,当有人输入错误的URL时,而不是404错误,他们会得到500错误。 有人会猜测返回null会将exception传播到链式处理程序,但Jersey不会这样做。 它实际上提供了很少的信息,为什么它会选择一个处理程序而不是另 有没有人遇到过这个问题,你是怎么解决的?

Jersey REST ResourceConfig实例不包含任何根资源类

虽然这是一个古老的问题,但我仍然找不到能够做到这一点的答案。 如果您发现我的任何陈述不正确,请更正。 我有一个Java Face应用程序并使用REST作为Web服务。 我不认为Face与我的问题有任何关系。 web.xml是: NDREST com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages com.bi.nd.webservice 1 NDREST /nd/* 我在web.xml中有更多的servlet,因为它是一个带有Trinidad等的Face应用程序。 在com.bi.nd.webservice包中,我的资源类是: import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Marshaller; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Produces(MediaType.APPLICATION_XML) @Path(“/hello”) public class TransactionResource { public TransactionResource() { } @GET @Produces(MediaType.TEXT_PLAIN) public String itWorks() { return “Get is OK”; } } […]

通过JAXB将链接插入RESTEasy XML结果

我想通过RESTeasy / JAXB将链接插入XML。 我试图使用我的代码的文档 ,但这没有用,所以我只是在文档中编写给定的例子:它仍然不起作用,我不知道为什么。 背景: 要在我的JBoss RESTEasy API中实现HATEOAS原则,我必须在我的JAXB XML结果中插入链接,以便客户端可以浏览API。 我现在正试图了解如何做到这一点,但我不确定文档是否充满错误,或者我只是无法理解示例和解释: 不清楚的东西 : 据我了解,你必须使用@AddLinks来声明结果应该插入链接。 然后我必须使用@LinkResource 再次 (!?) 冗余地执行此操作,并且“ 有时 ”指定URI构建过程应该来自哪个类(例如@LinkResource(value = car.class) )。 然后我必须在实体类中添加一个RESTServiceDiscovery ,用@XmlElementRef注释它……但在示例中,在声明(!?)之后, RESTServiceDiscovery根本没有被使用。 码: 我真的很困惑如何使用所有这些,但当然我自己尝试了很多代码,让它工作。 以下代码就像文档示例: BookController.java import java.util.ArrayList; import java.util.Collection; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import org.jboss.resteasy.links.AddLinks; import org.jboss.resteasy.links.LinkResource; import com.gasx.extsys.datamodel.vo.kplan.Book; @Path(“/”) @Consumes({ “application/xml”, “application/json” }) […]

什么是Resteasy 3.X PreProcessInterceptor的正确替代品?

我正在使用本教程中描述的身份validation/授权机制构建rest服务: http : //howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/ 基本上它使用PreProcessInterceptor接口来扫描目标方法的注释(来自javax.annotation.security包),该方法描述了访问该方法所需的角色。 由于此处的validation器是拦截器,它可以取消目标方法调用,如果需要,返回401(未授权)。 这里的问题是在当前的RestEasy版本(3.0.1)中不推荐使用接口org.jboss.resteasy.spi.interception.PreProcessInterceptor,我在尝试使用标准JAX-RS接口实现相同的行为时遇到了问题。 我正在使用javax.ws.rs.ext.ReaderInterceptor接口来拦截调用。 但不知何故,服务器从不调用它:拦截器只是被忽略了。 我正在使用与之前的PreProcessInterceptor相同的方式注册拦截器/资源,并使用相同的@Provider和@ServerInterceptor注释: ServerApplication: public class ServerApplication extends javax.ws.rs.core.Application { private final HashSet singletons = new LinkedHashSet(); public ServerApplication() { singletons.add(new SecurityInterceptor()); singletons.add( … ); //add each of my rest resources } @Override public Set<Class> getClasses() { HashSet<Class> set = new HashSet<Class>(); return set; } @Override public Set […]

尝试通过JAX-RS Web服务发送JSON对象,获取“找不到媒体类型= application / json的MessageBodyWriter”

我试图通过JAX-RS Web服务发送JSON对象。 我的文件web.xml是: JAX-RS Tools Generated – Do not modify JAX-RS Servlet org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages it.notifire com.sun.jersey.api.json.POJOMappingFeature true 1 JAX-RS Servlet /jaxrs/* 模拟我要发送的对象的类是: public class GPSCoordinate { private float latitudine; private float longitudine; public float getLatitudine() { return latitudine; } public void setLatitudine(float latitudine) { this.latitudine = latitudine; } public float getLongitudine() { return longitudine; } […]

在JAX-RS中使用Location头创建响应

我在NetBeans中使用RESTful模板在实体中自动生成类,具有CRUD函数(使用POST,GET,PUT,DELETE注释)。 我有一个创建方法的问题,从前端插入实体后,我想创建更新响应,以便我的视图将自动(或异步,如果这是正确的术语)反映添加的实体。 我遇到了这个(示例)代码行,但是用C#编写(我对此一无所知): HttpContext.Current.Response.AddHeader(“Location”, “api/tasks” +value.Id); 在Java中使用JAX-RS,无论如何都可以像在C#中一样获取当前的HttpContext并操纵头文件? 我最接近的是 Response.ok(entity).header(“Location”, “api/tasks” + value.Id); 这个肯定是行不通的。 在构建Response之前,我似乎需要获取当前的HttpContext。 谢谢你的帮助。

如何设置和检查JAX-RS的cookie?

我是RESTful API的noobie,我正在尝试构建一个Login服务,我在其中提供电子邮件和密码,如果validation成功,则存储cookie。 另外,我如何检查cookie(如果存储)? 怎么能实现这一目标? @Path(“/login”) @POST @Produces(MediaType.APPLICATION_JSON) @Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON}) public Response Login(final String i_LoginDetails) throws JSONException { final JSONObject obj = new JSONObject(i_LoginDetails); try { if (isValidUser(obj.getString(“email”), obj.getString(“password”))) { // Set a cookie } else { // return error invalid-credentials message } } catch (Exception e) { e.printStackTrace(); } return Response.ok(“TEST”).build(); } 我如何检查cookie(如果设置)?

是否可以定义一个与其实现分开的jax-rs服务接口(使用eclipse和jersey)?

我不知道标题是否令人困惑,但让我说我有这个界面: @Produces(MediaType.APPLICATION_JSON) @Path(“/user”) public interface UserService { @GET @Path(“/{userId}”) public Response getUser(@PathParam(“userId”) Long userId); } 为什么当我尝试实现一个版本Eclipse重写覆盖方法的注释而不是类? class UserServiceImpl implements UserService { @Override @GET @Path(“/{userId}”) public Response getUser(@PathParam(“userId”) Long userId) { // TODO Auto-generated method stub return null; } } 我试图为restful Web服务创建一个标准定义,然后进行不同的实现。 用标准的jax-rs可以这样吗? 我是否有机会使用错误的注释?

使用JAX-RS的REST – 处理长时间运行的操作

我有一个用JAX-RS实现的REST服务。 有些操作需要很长时间才能完成,可能需要15-30分钟。 对于这些情况,我倾向于派遣后台线程来处理长时间运行的操作,然后立即响应HTTP状态202 ACCEPTED。 响应将包含一个带有URL的位置标头,客户端可以使用该标头来轮询进度。 此方法需要创建线程来处理长时间运行的操作,以便可以立即返回202 ACCEPTED。 我也知道在Java EE容器中创建自己的线程通常是不好的做法! 我的问题如下: 人们都同意这是一种正确的方法吗? 假设它是正确的,人们可以推荐一个“良好实践”解决方案,使我能够在后台调度长时间运行并立即返回吗? 另外,为了避免管理我自己的线程,我查看了JAX-RS异步服务器api。 不幸的是,虽然这提高了服务器吞吐量,但它不允许我立即响应ACCEPTED。 泽西州声明如下: Note that the use of server-side asynchronous processing model will not improve the request processing time perceived by the client. It will however increase the throughput of the server, by releasing the initial request processing thread back to the I/O […]