Tag: jax rs

JAX-RS Web服务在哪个容器中运行?

据我所知,java EE应用服务器主要有两种类型的容器。 即Web容器和EJB容器。 我设法运行一个JAX-RS应用程序,它在Tomcat中使用Jersey作为它的实现。 据我所知,Tomcat只是一个Web容器。 为了在tomcat中运行web服务,必须将jersey jars捆绑到war文件中,因为开箱即用,Tomcat没有jersey jars。 这提出了一个问题。 tomcat是否使用除Jersey之外的其他JAX-RS实现? 如果是的话是什么? 如果不, 如果没有将jars捆绑到war文件中,我无法运行Jax-RS应用程序,这意味着JAX-RS应用程序需要的东西比Web容器提供的更多。 这意味着它们不会在Web容器中运行。 那么它在哪个容器中运行?

如何从ContainerRequestContext获取路径参数

我想为我的REST API端点应用授权filter,并且filter需要path参数来进行过滤。 这是我的端点和代码: 终点: curl –url ‘localhost:80/reports/resources/org/12345/product/111 ‘ –request GET –header ‘Authorization: ‘ 资源代码: @Path(“/resources”) public class MyResource extends AbstractResource { … @GET @Path(“/org/{orgId}/product/{productId}”) @Produces(MediaType.APPLICATION_JSON) @RoleAuthenticated public Response getResourcesReport(@PathParam(“orgId”) String orgId, @PathParam(“productId”) String productId, @Context HttpHeaders headers){….} 过滤: @PreMatching @RoleAuthenticated public class AuthorizationFilter implements ContainerRequestFilter { @Override public void filter(ContainerRequestContext requestContext) throws IOException { MultivaluedMap […]

使用Apache CXF 2.4 JAX-RS和Spring Security 3.2获取用户名

我使用SecurityContextHolder在我的JAX-RS资源中获取用户名,并且可以正常工作: @Path(“/myresource”) public class MyResoure { @Get public String getUserName() { return SecurityContextHolder.getContext().getAuthentication().getName(); } } 但我想将SecurityContext注入到类字段中(以编写JUnit测试)。 我尝试了一些记录的方法: 使用javax.ws.rs.core.SecurityContext我得到一个NullPointerException ,因为securityContext始终为null 。 @Path(“/myresource”) public class MyResoure { @Context private javax.ws.rs.core.SecurityContext securityContext; @Get public String getUserName() { return securityContext.getUserPrincipal().getName(); } } 使用org.apache.cxf.security.SecurityContext (请参阅Apache CXF文档 ),我得到一个NullPointerException ,因为securityContext.getUserPrincipal()始终为null 。 @Path(“/myresource”) public class MyResoure { @Context private org.apache.cxf.security.SecurityContext securityContext; @Get public […]

如何在RESTEasy 3.0客户端框架中设置HTTP标头(使用ResteasyClientBuilder和ResteasyWebTarget)?

我试图弄清楚如何设置类似于此处解释的HTTP标头: 如何在RESTEasy客户端框架中设置HTTP标头? 或者在这里 RESTEasy客户端框架身份validation凭据 但是,我想使用RESTeasy 3.0function(ResteasyClientBuilder和ResteasyWebtarget)而不是已弃用的ProxyFactory,如下所述: 什么是Resteasy ProxyFactory类的替代品 只是为了澄清,我也不想在每个请求上设置标头/不希望它们被传递给客户端,我希望它们在ResteasyClientBuilder / ResteasyWebtarget级别上设置,如果可能的话。

JAX-RS和长轮询

我正在尝试使用JAX-RS(Jersey实现)进行长轮询,但它不能像我预期的那样工作。 也许我误会了什么。 我很感激任何建议。 请注意,出于安全原因,使用反向连接(类似Atmosphere,Comet等)不是一种选择。 并不是说我目前正在开发Tomcat 7。 从JQuery Ajax调用(使用$.ajax )调用以下方法。 @Path(“/poll”) @GET public void poll(@Suspended final AsyncResponse asyncResponse) throws InterruptedException { new Thread(new Runnable() { @Override public void run() { this.asyncResponse = asyncResponse; // wait max. 30 seconds using a CountDownLatch latch.await(getTimeout(), TimeUnit.SECONDS); } }).start(); } 从我的应用程序调用另一个方法(在JMS调用之后): @POST @Path(“/printed”) public Response printCallback() { // … // […]

如何实现没有web.xml的jaxrs应用程序

我试图在没有web.xml配置的情况下部署一个非常简单的jaxrs应用程序,并且无法使其正常工作。 我希望访问的URL是serverandport / {appname} / rest / welcome / hello,我想我必须遗漏一些显而易见的东西。 应用 @ApplicationPath(“/rest”) public class EngineApp extends Application { @Override public Set<Class> getClasses() { Set<Class> s = new HashSet<Class>(); s.add(RestTestImpl.class); return s; } } 资源 @Path(“/welcomes”) public class RestTestImpl { @GET @Path(“hello”) public String sayPlainHello() { return “Hi from Rest”; } } POM片段 org.apache.maven.plugins maven-war-plugin 2.1.1 […]

RESTEasy无法识别自定义邮件正文编写器

我的MessageBodyWriter @Provider @Produces(“text/csv”) public class CSVMessageBodyWriter implements MessageBodyWriter public static final String CONTENT_DISPOSITION_HEADER = “Content-Disposition”; //$NON-NLS-1$ private final static HeaderDelegate header = RuntimeDelegate.getInstance().createHeaderDelegate(ContentDispositionHeader.class); public long getSize(JaxbList t, Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { return -1; } public boolean isWriteable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { return CsvSerializer.class.isAssignableFrom(type); } public void […]

RESTEasy – javax.ws.rs.NotFoundException:无法找到完整路径的资源

我试图在GWT项目中使用RESTEasy实现REST服务,但是当我进入相应的URI时,应用程序返回: Grave: failed to execute javax.ws.rs.NotFoundException: Could not find resource for full path: http://127.0.0.1:8888/api/matches at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 我的web.xml是: resteasy.servlet.mapping.prefix /api Resteasy org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher javax.ws.rs.Application eii.api.MatchApplication Resteasy /api/* 应用程序的实现: public class MatchApplication extends Application { private Set singletons = new HashSet(); private […]

REST服务错误:资源不可用Glassfish 4.0 JAX-RS 2.0

我试图在Glassfish 4.0上部署一个简单的JAX-RS服务,并继续收到以下错误: HTTP Status 404 – Not Found type Status report messageNot Found descriptionThe requested resource is not available. GlassFish Server Open Source Edition 4.0 War文件在Glassfish服务器中部署得很好但是看起来类加载器没有正常工作并且正确地公开了其余的服务。 我试图弄清楚为什么课程没有适当加载。 我知道这可能是一个简单的配置更改,但我一直无法找到它。 配置: glassfish-web.xml: /reports Keep a copy of the generated servlet class’ java code. web.xml中: Jersey org.glassfish.jersey.servlet.ServletContainer 1 Jersey /rest/* 30 REST服务代码: package com.esa.report.rest.service; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; […]

Jersey RESTful服务:资源和响应

我看到很多基于泽西岛的Web服务由1个以上的WebResources组成,这些WebResources有1个以上的端点/方法,如下所示: package com.myws.fizz; public class FizzResource { @GET @Path(“/fizz/{id}”) public Response getFizzById(@PathParam(“id”) Long id) { // …etc. } @GET @Path(“/fizz”) public Fizz getFizzByFoo(Foo foo) { // …etc. } } package com.myws.buzz; public class BuzzResource { @POST @Path(“/buzz”) public Response createBuzz(Buzz buzz) { // …etc. } } 我对泽西岛认为的“资源”感到困惑。 “资源”和数据库之间是否存在关系? 一张桌子? 一个POJO? 你何时返回一个Response与一个POJO? 看看我上面的2个getFizz方法。 我何时返回Fizz ,何时返回Response ?