Tag: jersey 2.0

HK2注释未被处理

我正在通过泽西岛使用HK2,我希望得到@Immediate服务。 在这个过程中,我注意到(似乎)我的服务的所有注释都没有注册。 例如,在启动我的ServiceLocator并查看我的描述符以获取使用@Singleton注释的服务之后,它仍然设置为@PerLookup。 我的启动应用程序处理程序的代码如下: ApplicationHandler handler = new ApplicationHandler(resourceConfig, new AbstractBinder() { … }); 我的活页夹注册了这样的服务: bindAsContract(ShouldHaveSingletonScope.class); 在此之后立即查看我的ServiceLocator,我发现范围没有从类中拉出(仍然是@PerLookup)。 我需要指定一些额外的内容来告诉HK2解析类注释吗? 这似乎是一个非常标准的用例,所以我必须遗漏一些东西。

jersey中的注释inheritance

我正在创建一些具有相同forms的资源类,所以一个好主意是使用DRY并使用inheritance。 所以我创建了一个RootResource类并在那里放了一些方法。 我想注释它们然后在子类中实现它们但它不起作用! 这是一个示例代码: public abstract class RootResource { @GET @Path(“/{id: .*}”) public abstract String getInfo(String uid); } @Path(“/user”) public class UserResource extends RootResource{ public String getInfo(@PathParam(“id”) String uid) { System.out.println(“Hello!”); } } 我正在使用jersey2.6。 任何想法? 谢谢。

Jersey 2中的自定义MOXyJsonProvider无法正常工作?

我正在阅读Moxy的答案忽略json中的无效字段,并且方法匹配了我正在尝试做的事情,所以我决定试一试..我创建了一个function来禁用默认的ConfigurableMoxyJsonProvider; @Provider public class JsonFeature implements Feature { @Override public boolean configure(final FeatureContext context) { final String disableMoxy = CommonProperties.MOXY_JSON_FEATURE_DISABLE + ‘.’ + context.getConfiguration().getRuntimeType().name().toLowerCase(); context.property(disableMoxy, true); return true; } } 我创建了一个非常简单的自定义提供商; @Provider @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class JsonProvider extends MOXyJsonProvider { @Override protected void preWriteTo(Object object, Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, […]

如何在Jersey 2.12获得HK2 ServiceLocator?

我想创建一个类的单例实例,该类没有作为资源或服务参与Jersey,但是希望从Jersey ServiceLocator注入其依赖项。 我可以在我的ResourceConfig构造函数中手动注册这个类,然后将ResourceConfig传递给Grizzly工厂方法,如下所示: ResourceConfig resourceConfig = new DeviceServiceApplication(); LOGGER.info(“Starting grizzly2…”); return GrizzlyHttpServerFactory.createHttpServer(BASE_URI, resourceConfig, mServiceLocator); 剩下的问题是如何获取对Jersey ServiceLocator的引用,以便我可以调用createAndInitialize()来获取注入了依赖项的对象。 我在以前的Jersey版本中看到有一些构造函数变体需要ApplicationHandler,它当然提供对服务定位器的访问(我如何初始化这是另一回事)。 您还可以看到我已经尝试传入父ServiceLocator,但当然解决方案是从child – > parent locator而不是在另一个方向,所以要求父对象失败因为Jersey @Contract和@Service类型不是这里可见。 我是否需要使用GrizzlyHttpServerFactory以外的其他东西? 我是否放弃并手动连接我的单身依赖项?

在简单的Jersey网络应用程序中获取大量“从多个位置扫描”警告

一段时间后回到Java,我正在尝试使用命令行在Java 8,Jersey 2.27和Jetty 9.4.9上进行简单的RESTful API。 该应用确实有效 ,但我不断收到数百条警告: 2018-04-27 01:17:24.845:WARN:oeja.AnnotationParser:main: Unrecognized runtime asm version, assuming 393216 2018-04-27 01:17:24.945:WARN:oeja.AnnotationParser:qtp988458918-12: javax.el.ArrayELResolver scanned from multiple locations: jar:file:///tmp/jetty-0.0.0.0-8081-paste4j.war-_-any-8355640322316327743.dir/webapp/WEB-INF/lib/el-api-2.2.jar!/javax/el/ArrayELResolver.class, jar:file:///paste4j/deployment/jetty-runner-9.4.9.v20180320.jar!/javax/el/ArrayELResolver.class 2018-04-27 01:17:24.949:WARN:oeja.AnnotationParser:qtp988458918-12: javax.el.BeanELResolver$BeanProperties scanned from multiple locations: jar:file:///tmp/jetty-0.0.0.0-8081-paste4j.war-_-any-8355640322316327743.dir/webapp/WEB-INF/lib/el-api-2.2.jar!/javax/el/BeanELResolver$BeanProperties.class, jar:file:///paste4j/deployment/jetty-runner-9.4.9.v20180320.jar!/javax/el/BeanELResolver$BeanProperties.class 2018-04-27 01:17:24.952:WARN:oeja.AnnotationParser:qtp988458918-12: javax.el.BeanELResolver$BeanProperty scanned from multiple locations: jar:file:///tmp/jetty-0.0.0.0-8081-paste4j.war-_-any-8355640322316327743.dir/webapp/WEB-INF/lib/el-api-2.2.jar!/javax/el/BeanELResolver$BeanProperty.class, jar:file:///paste4j/deployment/jetty-runner-9.4.9.v20180320.jar!/javax/el/BeanELResolver$BeanProperty.class 2018-04-27 01:17:24.954:WARN:oeja.AnnotationParser:qtp988458918-12: javax.el.BeanELResolver scanned from multiple locations: jar:file:///tmp/jetty-0.0.0.0-8081-paste4j.war-_-any-8355640322316327743.dir/webapp/WEB-INF/lib/el-api-2.2.jar!/javax/el/BeanELResolver.class, jar:file:///paste4j/deployment/jetty-runner-9.4.9.v20180320.jar!/javax/el/BeanELResolver.class 2018-04-27 01:17:24.959:WARN:oeja.AnnotationParser:qtp988458918-12: javax.el.CompositeELResolver scanned […]

如何在jersey2 / hk2应用程序中获取Jackson Object Mapper的引用

我有一个jersey2应用程序配置为通过jackson支持JSON,添加 org.glassfish.jersey.media jersey-media-json-jackson ${jersey.version} 在POM文件中 public MyApplication() { … register(JacksonFeature.class) … } 在我的申请中。 一切正常,我的资源将反序列化的POJO作为参数 @POST @Consumes(MediaType.APPLICATION_JSON) public void blah(MyPojo p) { … } 现在,其中一个资源需要引用Jackson的ObjectMapper来自行进行反序列化。 我尝试过这样的事情 @Inject public MyResource(@Context ObjectMapper mapper) { … } 要么 @GET public String foo(@Context ObjectMapper mapper) { … } 但在这两种情况下,对mapper的引用都为null。 如何在我的资源中注入对ObjectMapper的引用?

Jersey 2.0“入门”指南,找不到mainClass

嗨,我正在尝试按照Jersey 2.0的入门指南 。 我按原样执行了步骤1.1和1.2。 没问题。 对于步骤1.3,我有一个问题,因为maven找不到javax-annotation 1.2但是我按照另一个Stackoverflow用户的建议解决了它,并在我的pom中添加了一个存储库。 所以mvn clean test通过没有问题,但是当我尝试运行mvn clean exec:java我回来了 [WARNING] java.lang.ClassNotFoundException: com.example.Main at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285) at java.lang.Thread.run(Thread.java:722) pom.xml是由以下命令创建的: mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ -DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \ -DarchetypeVersion=2.0 我唯一的补充是: java.net.repo https://maven.java.net/content/groups/promoted/ default 在感兴趣的情况下,这是mvn -version的输出 Apache Maven 3.0.4 (r1232337; […]

检测客户端中止请求Jersey

我有泽西岛提供一个restfull网络服务。 经常发生客户端中止通过ajax完成的请求,这里解释了ajax abort方法abort ajax request 在服务器端,我得到以下输出。 哪个不好看。 有没有办法在泽西岛检测中止的请求? SEVERE: An I/O error has occurred while writing a response message entity to the container output stream. org.glassfish.jersey.server.internal.process.MappableException: ClientAbortException: java.net.SocketException: Broken pipe at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:96) at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154) at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:571) at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:378) at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:368) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:267) at […]

带有附加Cookie的Server Sent Event Client

我正在尝试使用额外的cookie对Server Sent Event资源进行unit testing。 我已经在为客户端使用Jersey作为EventSource和JavaX。 以下代码工作正常: WebTarget target = ClientBuilder.newBuilder() .register(SseFeature.class) .build() .target(“http://localhost:8080/sse”); EventSource eventSource = EventSource.target(target).build(); EventListener listener = new EventListener() { @Override public void onEvent(InboundEvent inboundEvent) { LOG.info(inboundEvent.readData(String.class)); } }; eventSource.register(listener); eventSource.open(); serverEventManager.send(“/sse”, “foo”); eventSource.close(); Hoewever,对于额外的unit testing,我需要在请求中添加额外的cookie。 我已经尝试了以下内容 target.(…).request.cookie(“foo”, “bar”); 但是这会返回一个构建器,我无法从中为EventSource创建所需的WebTarget。

指定定制应用上下文

我们正在使用泽西弹簧3将泽西1.x的一些数据服务从泽西1.x迁移到泽西2.x. 我们有几个inheritance自JerseyTest的测试类。 其中一些类使用未在web.xml文件中指定的自定义applicationContext.xml文件。 在Jersey 1.x中,扩展JerseyTest的测试类可以使用WebappDescriptor.Builder调用超级构造函数,可以传递上下文参数来设置或覆盖应用程序上下文路径。 例如 public MyTestClassThatExtendsJerseyTest() { super(new WebAppDescriptor.Builder(“com.helloworld”) .contextParam( “contextConfigLocation”, “classpath:helloContext.xml”) .servletClass(SpringServlet.class) .contextListenerClass(ContextLoaderListener.class) .requestListenerClass(RequestContextListener.class).build()); } 如何用Jersey 2.x实现同样的目标? 我已经梳理了API文档 , 用户指南和一些来源,但无法找到答案。 谢谢。