Tag: jersey

泽西岛:如何将jackson添加到Servlet Holder

我正在使用Jersey创建一个嵌入式Jetty webapp。 我不知道如何在这里添加jackson自动JSON serde: ServletHolder jerseyServlet = context.addServlet( org.glassfish.jersey.servlet.ServletContainer.class, “/*”); jerseyServlet.setInitOrder(0); jerseyServlet.setInitParameter( ServerProperties.PROVIDER_CLASSNAMES, StringUtils.join( Arrays.asList( HealthCheck.class.getCanonicalName(), Rest.class.getCanonicalName()), “;”)); // Create JAX-RS application. final Application application = new ResourceConfig() .packages(“com.example.application”) .register(JacksonFeature.class); // what do I do now to tie this to the ServletHolder? 如何在ServletHolder中注册此ResourceConfig ,以便在使用注释@Produces(MediaType.APPLICATION_JSON)使用Jackson? 这是嵌入式Jetty应用程序的完整主类 package com.example.application.web; import com.example.application.api.HealthCheck; import com.example.application.api.Rest; import com.example.application.api.Frontend; import org.apache.commons.lang.StringUtils; […]

期望一个对象数组但在对象中得到一个对象

在我正在进行的项目中,我遇到了一个角度exception: Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object? Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object? 在我寻找解决方案的搜索中,我直接将Web服务的URL输入到我的浏览器中,令人惊讶的是我没有按预期收到数组。 Web服务类: @Path(“/menu”) public class MenuHandler { @GET @Path(“/cls”) @Produces(MediaType.APPLICATION_JSON) public List getCLSs() { Clazz clazz = new Clazz(); Clazz.setFoo(“foo”); Clazz.setBar(“bar”); ArrayList […]

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

我正在从Jersey 1.x移植一些代码,我的各种运行状况检查端点的实现依赖于在启动时初始化的所有@Singleton端点资源,以便能够检测要执行的检查。 在Jersey 2.0中 – 无论我做什么,我似乎无法让我的资源端点在启动时初始化,并且它们仅在第一次访问每个端点时被构造+初始化。 我想我可以在Application类中自己初始化它们,但我宁愿使用包扫描! 有没有人知道是否有一些配置选项会告诉Jersey 2急切地初始化它在包扫描期间找到的所有资源端点? 还是一些HK2注释或技巧?

java jersey中415不支持的媒体类型

我有下面的代码说415不支持MEDIA类型和服务器拒绝此请求的问题,因为请求实体的格式不支持 post方法。 随处搜索并做了所有事情但没有结果。 帮帮我!! 以下是主要代码 ActivityResource.java @Path(“activityresource”) public class ActivityResource { private ActivityRepo activityRepo=new ActivityRepositoryStub(); @POST @Path(“postActivity”) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) public Activity createActivityParams(MultivaluedHashMap formse){ System.out.println(formse.getFirst(“discription”)); System.out.println(formse.getFirst(“duration”)); Activity activity=new Activity(); activity.setDiscription(formse.getFirst(“discription”)); activity.setDuration(Integer.parseInt(formse.getFirst(“duration”))); activityRepo.create(activity); return activity; } } Activity.java package com.ws.model; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Activity { private String id; private String discription; private int […]

Spring-Jersey:如何返回静态内容?

题 : 如何公开我的css/ , images/ , js/和其他静态文件? 如何为我的索引视图返回控制器(而不是String方法)中的JSP页面? 问题 : 在努力解决问题#1时,其他项目使用filterjersey.config.servlet.filter.staticContentRegex (如此处所示) Stackoverflow问题我无法在项目设置中找到正常工作的依赖项。 在努力解决问题#2时,我试图引入依赖关系来使用Viewable 。 问题 – 传递依赖关系会对使用适当的Spring和Jersey类别(将雪球变成模糊错误的兔子洞)对webapp产生负面影响 完成项目 > Github项目 依赖关系 > 完整的POM文件 org.glassfish.jersey.containers jersey-container-servlet 2.15 org.glassfish.jersey.ext jersey-spring3 2.15 org.springframework spring-web 3.2.3.RELEASE commons-logging commons-logging 1.1 javax.servlet servlet-api Web.xml > Web.xml org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml Jersey org.glassfish.jersey.servlet.ServletContainer javax.ws.rs.Application com.component.ResourceRegister 1 Jersey /* Controller > SpringController.java @Path(“/”) […]

使用带有Jersey @Path和@ApplicationPath的Spring属性占位符

我在项目中使用Jersey和Spring。 ‘jersey-spring3’用于它们之间的集成。 我想让我的资源类更灵活,并使用@Path注释中的属性,如: @Path(“${some.property}/abc/def”) 但Spring无法向Jersey的注释@Path和@ApplicationPath注入some.property 。 有什么方法可以在Jersey资源的@Path值中包含一些可配置的(使用属性文件)值吗? (我意识到用Spring MVC替换Jersey会更容易,但不幸的是我没有这个选择。)

列出所有已部署的rest端点(spring-boot,jersey)

是否可以使用spring boot列出我配置的所有rest端点? 执行器在启动时列出所有现有路径,我想要类似于我的自定义服务,所以我可以检查启动是否所有路径都配置正确并使用此信息进行客户端调用。 我该怎么做呢? 我在服务bean上使用@Path / @GET注释,并通过ResourceConfig#registerClasses @GET注册它们。 有没有办法查询所有路径的配置? 更新:我通过注册REST控制器 @Bean public ResourceConfig resourceConfig() { return new ResourceConfig() { { register(MyRestController.class); } }; } Update2:我希望有类似的东西 GET /rest/mycontroller/info POST /res/mycontroller/update … 动机:当spring-boot应用程序启动时,我想打印出所有已注册的控制器及其路径,因此我可以停止猜测要使用哪些端点。

使用JAX-RS的FileUpload

我尝试从JavaScript客户端上传文件到JAX-RS Java服务器。 我在我的服务器上使用以下REST上传function: @POST @Produces(‘application/json’) UploadDto upload( @Context HttpServletRequest request, @QueryParam(“cookie”) String cookie) { def contentType byte [] fileBytes log.debug “upload – cookie: “+cookie try{ if (request instanceof MultipartHttpServletRequest) { log.debug “request instanceof MultipartHttpServletRequest” MultipartHttpServletRequest myrequest = request CommonsMultipartFile file = (CommonsMultipartFile) myrequest.getFile(‘file’) fileBytes = file.bytes contentType = file.contentType log.debug “>>>>> upload size of the […]

将Jersey / Jackson配置为不使用@XmlElement字段注释进行JSON字段命名

我正在运行Jersey REST服务。 代表我的资源的POJO是JAXB(XML)带注释的简单Java类(它们是从模式定义生成的 – 因此它们具有注释)。 我希望Jersey / Jackson忽略XML-Annotations。 我在我的web.xml中做了这个配置(如这里提到的): com.sun.jersey.api.json.POJOMappingFeature true 我现在预计@ZMLElement注释不再用于JSON字段命名策略。 但是看看这个java字段(成员) @XmlElement(name = “person”, required = true) protected List persons; 我仍然得到以下JSON表示: ….,”person”:[{“name”:”FooBar”, ……. (person without the ‘s’) 所有其他字段仍然从@XmlElement注释中获取其JSON名称,而不是从Java字段名称获取。 我想实现jackson全数据绑定(POJO)示例中描述的JSON输出。 它在这样的简单测试中工作正常(使用我的XML注释类): ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(System.out, myObject); 但嵌入在泽西岛我没有得到预期的JSON输出。 Jersey中的其他配置选项是否为“简单”POJO JSON表示(因为这最适合需要反序列化JSON结果的客户端)。 谢谢克劳斯 详细解决方案 (1)为Jacksons ObjectMapper实现ContextResolver ,它创建一个不使用注释的ObjectMapper。 package foo.bar.jackson; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.ext.ContextResolver; […]

如何在运行grizzly的java se上启用web服务(jaxrs / jersey)中的CDI注入?

如何允许CDI将资源注入到宁静的Web服务资源中? 我使用焊接2(cdi),泽西(jaxrs)和灰熊(web服务器)在标准java上运行。 这是我简单的网络资源: import training.student.StudentRepository; import javax.inject.Inject; import javax.ws.rs.*; @Path(“student”) public class StudentWebResource { @Inject private StudentRepository studentRepository; @GET @Path(“count”) @Produces(MediaType.TEXT_PLAIN) public Integer getCount() { return studentRepository.studentCount(); } } 以下是我如何通过简单的Web服务器启动焊接: public class Main { public static void main(String[] args) throws Exception { startCdiApplication(); } public static void startCdiApplication() throws Exception { Weld weld = new […]