Tag: jersey 2.0

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应用程序启动时,我想打印出所有已注册的控制器及其路径,因此我可以停止猜测要使用哪些端点。

如何处理Spring Boot重定向到/ error?

我遇到了与此问题相同的问题,使用Spring Boot 1.3.0并且没有使用@RestController注释我的控制器,只有@Path和@Service 。 正如该问题中的OP所说, 对我来说,这不是明智的事 我也无法理解他们为什么会重定向到/错误。 我很可能错过了一些东西 ,因为我只能向客户回馈404或200。 我的问题是他的解决方案似乎不适用于1.3.0,所以我有以下请求流:让我们说我的代码抛出NullPointerException 。 它将由我的一个ExceptionMapper处理 @Provider public class GeneralExceptionMapper implements ExceptionMapper { private static final Logger LOGGER = LoggerFactory.getLogger(GeneralExceptionMapper.class); @Override public Response toResponse(Throwable exception) { LOGGER.error(exception.getLocalizedMessage()); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } 我的代码返回500,但不是将其发送回客户端,而是尝试将其重定向到/ error。 如果我没有其他资源,它会发回404。 2015-12-16 18:33:21.268 INFO 9708 — [nio-8080-exec-1] o.glassfish.jersey.filter.LoggingFilter : 1 * Server has received a request […]

HK2没有用jersey注入HttpServletRequest

我试图按照这里的例子来创建一个工厂,以便注入我的HttpSession。 不幸的是,无论我尝试什么,它都无法正常工作。 不确定可能是什么问题。 我试过注入HttpServletRequest和提供程序。 这是我使用提供程序的示例。 尝试在提供方法中访问提供程序时,该错误是空指针exception。 如果我尝试注入HttpServletRequest,我没有可用于注入的对象。 我使用JerseyTest在GrizzlyTestContainer中运行它。 为了绑定HttpServletRequest,我需要添加到我的活页夹吗? 我似乎无法找到一个例子。 public class HttpSessionFactory implements Factory { private final HttpServletRequest request; @Inject public HttpSessionFactory(Provider requestProvider) { this.request = requestProvider.get(); } @Override public HttpSession provide() { return request.getSession(); } @Override public void dispose(HttpSession t) { } }

如何使用Moxy和Jersey从HashMap返回JSON对象

我使用Jersey 2.17和Moxy,我有以下function: @Produces(APPLICATION_JSON) @Restricted public List getFriends( @PathParam(“user”) String user ) { return userDAO.getFriends(user); } User.preferences是一个HashMap 。 它适用于几乎所有对象,除了HashMap ,它被翻译成: “偏好”:{ “条目”:[{ “键”:{ “类型”: “串”, “值”: “语言”}, “值”:{ “类型”: “串”, “值”: “恩”}},{ “关键”:{ “类型”: “串”, “值”: “国”}, “值”:{ “类型”: “串”, “值”: “US”} }]} 但我真的想要返回的只是一个javascript对象,如: 喜好:{ “语言”: “恩”, “国”: “US”} 我怎样才能做到这一点?

如何在jersey / hk2应用程序中正确配置EntityManager?

我有一个使用JPA持久性的jersey-2 / hk2应用程序。 EntityManager在启动时就像这样绑定 public MyApplication() { // … register(new AbstractBinder() { @Override public void configure() { bindFactory(EmFactory.class) .to(EntityManager.class) .in(RequestScoped.class); } }); } 与工厂类一样 public class EmFactory implements Factory { private static final String PERSISTENCE_UNIT = “unit”; private EntityManagerFactory emf; private CloseableService closeableService; @Inject public EmFactory(@Named(PERSISTENCE_UNIT) String persistenceUnit, CloseableService closeableService) { emf = Persistence.createEntityManagerFactory(persistenceUnit); this.closeableService […]

捕获所有exception并返回Jersey中的自定义错误

我想在jerseyrest服务中捕捉所有意想不到的例外情况。 因此我写了一个ExceptionMapper: @Provider public class ExceptionMapper implements javax.ws.rs.ext.ExceptionMapper { private static Logger logger = LogManager.getLogManager().getLogger(ExceptionMapper.class.getName()); @Override public Response toResponse(Exception e) { logger.log(Level.SEVERE, e.getMessage(), e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(“Internal error”).type(“text/plain”).build(); } } 映射器捕获所有exception。 所以我写不出来: public MyResult getById(@PathParam(“id”)) { if (checkAnyThing) { return new MyResult(); } else { throw new WebApplicationException(Response.Status.NOT_FOUND); } } 这是由Mapper捕获的。 现在我要写: public Response getById(@PathParam(“id”) { […]

Java Jersey应用程序启动时的NoSuchMethodError

尝试在Tomcat上启动Jersey应用程序时,我遇到了一个非常奇怪的错误。 相同的代码适用于其他计算机。 我尝试重新安装tomcat,我所有的maven依赖项,甚至是Eclipse和Java本身,没有运气。 我觉得看起来像是一个糟糕的泽西版本正在加载? 任何指向正确的方向将不胜感激。 这是有效的pom: http : //pastebin.com/NacsWTjz 而实际的pom: http : //pastebin.com/H6sHe4ce 2015-02-13 13:43:40,870 [localhost-startStop-1] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/middleware-server] – StandardWrapper.Throwable java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:304) at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:285) at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:311) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1031) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4901) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5188) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at […]

Spring-Boot Jersey:允许泽西岛提供静态内容

该应用程序使用JDK 8,Spring Boot和Spring Boot Jersey启动程序,并打包为WAR(尽管它是通过Spring Boot Maven插件在本地运行的)。 我想要做的是将我生成的文档(在构建时)生成为欢迎页面。 我尝试了几种方法: 让Jersey为静态内容提供服务,方法是在application.properties配置正确的init参数,如下所述 引入metadata-complete=false web.xml ,以便将生成的HTML文档列为欢迎文件。 这些都没有成功。 我想避免为了提供静态文件而启用Spring MVC或创建Jersey资源。 任何想法? 这是Jersey配置类(我试图在那里添加ServletProperties.FILTER_STATIC_CONTENT_REGEX失败了): @ApplicationPath(“/”) @ExposedApplication @Component public class ResourceConfiguration extends ResourceConfig { public ResourceConfiguration() { packages(“xxx.api”); packages(“xxx.config”); property(ServerProperties.BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK, true); property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true); } } 这里是Spring Boot应用程序类(我尝试使用spring.jersey.init.jersey.config.servlet.filter.staticContentRegex=/.*html添加一个application.properties但它没有用,我不确定是什么属性键应该在这里): @SpringBootApplication @ComponentScan @Import(DataConfiguration.class) public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { […]