标签: jersey-2.0

Jersey 2.0提供宁静的网络服务

任何人都可以告诉我如何使用Jersey 2.0制作一个安静的Web服务.我到处搜索并找到Jersey1.x版本的教程,但不是2.0.请帮忙

java rest jersey-2.0

2
推荐指数
1
解决办法
2万
查看次数

Weblogic12c是否支持jersey 2.x?

我已将我的Web应用程序升级到JAX-RS 2.0.

Web应用程序似乎在Apache Tomcat上运行良好.但是,它不会部署在Weblogic 12c(甚至10.3.6)上.

我不确定weblogic是否有适当的支持,我相信它需要一些配置和类加载器过滤来覆盖默认的JAX-RS 1.1实现?

知道如何实现这一点并让我的Web应用程序在WLS 12c上运行吗?

jax-rs weblogic12c jersey-2.0

2
推荐指数
1
解决办法
9369
查看次数

如何让我的Jersey 2端点在启动时急切地初始化?

我正在从Jersey 1.x移植一些代码,并且我对各种运行状况检查端点的实现依赖于@Singleton在启动时初始化的所有端点资源,以便能够检测要执行的检查.

在Jersey 2.0中 - 无论我做什么,我似乎无法让我的资源端点在启动时初始化,并且它们仅在第一次访问每个端点时被构造+初始化.

我想我可以在Application课堂上自己初始化它们,但我宁愿使用包扫描!

有没有人知道是否有一些配置选项会告诉Jersey 2急切地初始化它在包扫描期间找到的所有资源端点?

还是一些HK2注释或技巧?

java jersey jersey-2.0 hk2

2
推荐指数
1
解决办法
2911
查看次数

与Grizzly一起运行泽西岛

我试图将泽西与Grizzly一起用作自托管

基本上我的主要是:

org.glassfish.jersey.server.ResourceConfig rc = new ResourceConfig();
rc.registerClasses(DummyController.class);
webServer = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false);
System.out.println("Server Created");
try {
    webServer.start();
    System.out.println("Server Started");
} catch (IOException e) {
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个小型控制器:

@Path("/")
public class DummyController {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String get() {
        return "Got it!";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我得到一个例外:

Exception in thread "main" java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:309)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:289)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(GrizzlyHttpContainer.java:331)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer(GrizzlyHttpServerFactory.java:141)
at RestServer.Server.main(Server.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Run Code Online (Sandbox Code Playgroud)

当我没有添加资源时,灰熊服务器运行正常,但我无法访问任何控制器

我使用Maven下载所有依赖项

这是pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …
Run Code Online (Sandbox Code Playgroud)

java grizzly jersey-2.0

2
推荐指数
1
解决办法
2407
查看次数

使用有效负载或表单数据删除请求会导致错误请求

我正在使用Java Jersey 2.17构建RESTful Web服务.客户端.我正在使用ExtJS 5进行开发.

我的服务课程

Main.java

 public class Main
 {
    public static final String BASE_URI = "http://localhost:8080/app/rest/";
    public static HttpServer startServer() {
        final ResourceConfig rc = new ResourceConfig();

        rc.packages(true, "app");
        rc.register(ResponseCorsFilter.class);

        return GrizzlyHttpServerFactory.createHttpServer(URI.create(Main.BASE_URI), rc);
    }

    public static void main(final String[] args) throws IOException {
        final HttpServer server = Main.startServer();
        System.out.println(String.format("Jersey app started with WADL available at " + "%sapplication.wadl\nHit enter to stop it...",
                Main.BASE_URI));
        System.in.read();
        server.stop();
    }
}
Run Code Online (Sandbox Code Playgroud)

UserRi.java

@Path("/user")
public class UsersRi {
    @DELETE
    @Path("/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public String …
Run Code Online (Sandbox Code Playgroud)

java ajax xmlhttprequest grizzly jersey-2.0

2
推荐指数
1
解决办法
4227
查看次数

问题:java.lang.UnsupportedClassVersionError:org/glassfish/jersey/servlet/ServletContainer

我写了一个RESTful Web服务.下面是我的maven依赖项.

<dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.spec.javax.annotation</groupId>
        <artifactId>jboss-annotations-api_1.1_spec</artifactId>
        <version>1.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>net.jcip</groupId>
        <artifactId>jcip-annotations</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java rest jersey maven jersey-2.0

2
推荐指数
1
解决办法
1万
查看次数

Jersey - 在调用 context.proceed() 之前在拦截器中获取 OutputStream 的内容

在 Jersey 中使用拦截器我可以操作输出,但是,我还想向响应添加一个 Header,该值是根据输出结果计算的。

@Sha256Sum
public class Sha256SumInterceptor implements WriterInterceptor {

    public static final String SHA256_HASH_HEADER_NAME = "SHA256-SUM";

    @Override
    public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {
        // Retrieve the OutputStream, read the contents and calculate the hashsum.
        // Set the header value in context.
        context.proceed();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,问题是当我最终阅读了整个流时,我无法将标题设置为调用 context.proceed 和写入的内容(从而使我能够对其进行任何操作)我无法再设置标题。

简而言之,我的问题是:如何将整个流输出捕获为字节 [],从字节数组计算结果,并最终在对计算结果的响应中设置标头?我不想耗尽输出流。

java jersey jersey-2.0

2
推荐指数
1
解决办法
709
查看次数

基于HttpRequest而没有单身的球衣2上下文注入

我想按字段为单个请求注入一个数据存储区,比如

@Context
protected HttpServletRequest request;
Run Code Online (Sandbox Code Playgroud)

目前我已经实现了类似的方法: Jersey 2.x自定义注入注释具有属性 如下:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.FIELD})
public @interface TenantDatastore {}
Run Code Online (Sandbox Code Playgroud)
public class TenantDatastoreFactory extends AbstractContainerRequestValueFactory<Datastore> {

    public TenantDatastoreFactory() {}

    @Override
    public Datastore provide() {
        ContainerRequest request = getContainerRequest();
        return DatastoreManager.getDs(request.getHeaders().get("Host")));
    }

    @Override
    public void dispose(Datastore d) {}
}
Run Code Online (Sandbox Code Playgroud)
public class TenantDatastoreFactoryProvider extends AbstractValueFactoryProvider {

    private final TenantDatastoreFactory tenantDatastoreFactory;

    @Inject
    public TenantDatastoreFactoryProvider(
            final MultivaluedParameterExtractorProvider extractorProvider,
            ServiceLocator locator,
            TenantDatastoreFactory tenantDatastoreFactory) {

        super(extractorProvider, locator, Parameter.Source.UNKNOWN);
        this.tenantDatastoreFactory = tenantDatastoreFactory;
    }

    @Override
    protected Factory<?> createValueFactory(Parameter parameter) {
         Class<?> paramType …
Run Code Online (Sandbox Code Playgroud)

java rest dependency-injection dropwizard jersey-2.0

2
推荐指数
1
解决办法
4252
查看次数

Jersey ContainerRequestFilter:抛出“ abortWith”且状态被禁止后得到404(403)

带有令牌身份验证+基于角色的授权的Jersey 2.22 API(我保护API的方式基于本文的公认答案:使用JAX-RS和Jersey进行基于REST令牌身份验证的最佳实践。最好在阅读之前阅读它试图理解我的问题):

这是我的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!-- LISTENERS -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>JerseySpringServlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>ca.toto.api.filters</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>ca.toto.api.restapi</param-value>
    </init-param>

    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>ca.toto.api.filters.AuthenticationFilter;ca.toto.api.filters.AuthorizationFilter;com.toto.api.restapi.TaskRestService</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>JerseySpringServlet</servlet-name>
    <url-pattern>/filters/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>JerseySpringServlet</servlet-name>
    <url-pattern>/restapi/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

当我调用任务 Web服务时,流程毫无问题地进入第一个过滤器(AuthenticationFilter)(@Priority(Priorities.AUTHENTICATION)),验证我的令牌,从解码的令牌中获取用户,然后将其注册为委托人然后传入第二个过滤器AuthorizationFilter@Priority(Priorities.AUTHORIZATION)),在这里我从安全上下文中获取用户,获取其角色,然后检查他是否有权进行调用。如果是,请正常退出过滤器(如果否),请使用javax.ws.rs.container.ContainerRequestContextabortWith方法发送状态为403的响应:

@Secured
@Provider
@Priority(Priorities.AUTHORIZATION)
public class AuthorizationFilter implements ContainerRequestFilter {

    ...
try {
        boolean isAllowed = false;
        // Check if the …
Run Code Online (Sandbox Code Playgroud)

java rest restful-authentication httpresponse jersey-2.0

2
推荐指数
1
解决办法
1703
查看次数

Jersey 没有注册我的资源

我有一个使用 Spring Boot(2.0.0) 和 Jersey 的非常基本的应用程序。不幸的是,当我尝试调用暴露的端点时,我收到错误 404。

我的代码如下所示:

主要类:

public class App {
    public static void main( String[] args )  {
        SpringApplication.run(App.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

泽西配置:

@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig{
    public JerseyConfig() {
        register(FileResource.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

资源:

@Component
@Consumes(MediaType.APPLICATION_JSON)
public class FileResource {

    @POST
    @Path("/uploadfile")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void upload(@FormDataParam("file") InputStream fileInputStream,
            @FormDataParam("file") FormDataContentDisposition disposition) {
        System.out.println(disposition.getName());

    }

    @GET
    @Path("/foo")
    public String foo() {
        return "foo";
    }
}
Run Code Online (Sandbox Code Playgroud)

Maven 依赖项:

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
  </parent>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey-2.0

2
推荐指数
1
解决办法
778
查看次数