网站.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
See: http://docs.oracle.com/cd/E28613_01/web.1211/b65890/web_xml.htm
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>JerseyApp</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>path.to.package.MainClass</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JerseyApp</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
我的主要课程:
@ApplicationPath("/")
public class MainClass extends ResourceConfig
{
public MainClass() {
// Add a package used to scan for components.
packages(this.getClass().getPackage().getName());
}
}
控制器和主类位于同一包中。
@Path("/abc")
public class LabelController
{
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<ABC> getResources(@QueryParam("something") List<String> ids)
{
建筑等级:
buildscript {
ext {
LOMBOK_VERSION = "1.18.22"
JAVAX_WSRS_VERSION = "2.1.1"
}
}
plugins {
id "org.gretty" version "4.0.3"
}
apply plugin: 'java-library'
apply plugin: 'java'
apply plugin: 'war'
repositories {
mavenLocal()
maven {
another intern repositories
}
}
dependencies {
compileOnly "org.projectlombok:lombok:${LOMBOK_VERSION}"
testImplementation "org.projectlombok:lombok:${LOMBOK_VERSION}"
annotationProcessor "org.projectlombok:lombok:${LOMBOK_VERSION}"
implementation "com.microsoft.sqlserver:mssql-jdbc:9.4.1.jre11"
implementation "javax.ws.rs:javax.ws.rs-api:${JAVAX_WSRS_VERSION}"
implementation 'org.glassfish.jersey.core:jersey-server:3.0.8'
implementation 'org.glassfish.jersey.containers:jersey-container-servlet:3.0.8'
}
当我用运行应用程序时/gradlew appRun
并调用urlhttp://localhost:8080/myservice
我遇到了这个错误。
错误:
HTTP ERROR 500 jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
URI: /myservice/
STATUS: 500
MESSAGE: jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
SERVLET: JerseyApp
CAUSED BY: jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
CAUSED BY: java.lang.IllegalStateException: InjectionManagerFactory not found.
Caused by:
jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:651)
at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:486)
at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:731)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1375)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1297)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.server.Server.handle(Server.java:562)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: InjectionManagerFactory not found.
at org.glassfish.jersey.internal.inject.Injections.lambda$lookupInjectionManagerFactory$0(Injections.java:74)
at java.base/java.util.Optional.orElseThrow(Optional.java:403)
at org.glassfish.jersey.internal.inject.Injections.lookupInjectionManagerFactory(Injections.java:74)
at org.glassfish.jersey.internal.inject.Injections.createInjectionManager(Injections.java:69)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:339)
at jakarta.servlet.GenericServlet.init(GenericServlet.java:178)
at org.eclipse.jetty.servlet.ServletHolder$Wrapper.init(ServletHolder.java:1305)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:633)
... 29 more
我和intellij一起工作。
我添加了这个依赖项:实现'org.glassfish.jersey.inject: jersey-hk2:3.0.8'
我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?
我试图用户泽西的JSON/bean验证,但是当初始化servlet发生错误。 全栈跟踪: pom.xml: 可能引发异常的行: 更新:使用Java8 更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题再发些短信,这样我就可以发布这个问题了
问题内容: 我有一个Jersey REST API,并且正在使用来处理授权。我还在所有端点上使用,以便我的API可以处理数千个并发请求。 我的授权过滤器命中了一个远程服务,但是当运行过滤器时,Jersey尚未将当前线程添加到它的内部,因此我完全失去了异步的好处。 我可以告诉Jersey我希望这是异步的吗? 这是一个示例资源: 更新 刚刚收到泽西队球员的回音,从2.7开始,这是不可能的。只有资源方法
我很难理解泽西岛的注入机制。JAX-RS规范(http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-520005)指出,在应用程序子类、根资源类和提供程序中可以通过@Context进行注入。 我现在有一个在启动时实例化的类,并且有一个在每次请求时调用的方法。在方法内部,我需要访问当前的UriInfo对象。问题是,这个方法不是从我的
我正在泽西岛2中编写一个RESTful网络服务。我想支持响应的 Gzip 编码。按照这个答案,我在我的类中启用了。 在我的资源类中,我返回一个对象。 现在,当我点击这个api时,我得到一个响应,但响应头不包含头,而是包含 header。 请求: 响应: 响应中没有 标头,也没有任何标头。 我在上使用。 我还遗漏了其他配置吗?我如何获得这两个头并得到gzip压缩的响应,而不是接收分块的响应? 编辑:
问题内容: 我在Glassfish上有一个工作正常的JavaEE 6 Web应用程序,该应用程序已经具有JSF前端并具有其身份验证机制((使用基于CDI和注释的安全性),因此有一个登录屏幕,用户输入用户名密码,按登录按钮和Java EE身份验证过程开始。 现在,我想“还将”我的一些服务类公开为REST服务(我可能会使用Jersey),因此也可以从移动设备访问它。但是让我担心的是登录部分。 我将使用