- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试设置我的第一个 Java-EE (JDK8) 应用程序,但无法覆盖上下文根以使用 @ApplicationPath
注释。正在使用的应用程序服务器是 Wildfly 16.0.0.Final,我正在尝试使用 Resteasy 作为 JAX-RS 实现。
因为我使用 gradle 将我的应用程序部署为 war ,所以这是我的依赖项:(这是一团糟,我试图弄清楚我真正需要什么,什么不需要,总是欢迎建议)
dependencies {
compileOnly 'org.jboss.logging:jboss-logging:3.3.0.Final'
compileOnly 'org.apache.logging.log4j:log4j-api:2.8.2'
compileOnly 'org.eclipse.persistence:javax.persistence:2.1.0'
compileOnly 'javax.inject:javax.inject:1'
compileOnly 'javax.transaction:javax.transaction-api:1.2'
compileOnly 'javax.enterprise:cdi-api:2.0'
compileOnly 'org.hibernate:hibernate-core:5.4.2.Final'
compileOnly 'org.hibernate:hibernate-envers:5.4.2.Final'
compileOnly 'com.fasterxml.jackson.core:jackson-core:2.9.8'
compileOnly 'com.fasterxml.jackson.core:jackson-annotations:2.9.8'
compileOnly 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
compile group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: '3.6.3.Final'
compile group: 'org.jboss.resteasy', name: 'jaxrs-api', version: '3.0.12.Final'
}
我确认 wildfly 使用的是适当版本的 resteasy,而且它还使用 3.6.3。
我的应用程序配置如下所示:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;
@ApplicationPath("rest/*")
public class ApplicationConfig extends Application {
// Intentionally empty. Just used to configure the application path for wildfly
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> s = new HashSet<>();
s.add(HelloWorldController.class);
return s;
}
}
现在我目前能够成功部署我的应用程序,但上下文根仍然设置为我的 war 文件的名称,如下所示:
18:39:47,586 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 85) WFLYUT0021: Registered web context: '/Rest-Test-1.0' for server 'default-server'
当访问带有 war 名称的 URL 时,我可以看到我的 WebFilter 的日志条目,但过滤器也无法正确执行链,将其寻址到具有匹配 @Path< 的正确类
注释。(这可能也是 CDI 的问题吗?)
更新 1:将 @ApplicationPath 更改为“/rest”或“rest”也不会更改上下文根注册。它仍然以 war 名称作为上下文根。
长话短说:为什么我的 @ApplicationPath
注释被忽略,为什么我的 webfilter 不能因此链接请求?
解决方案:
这删除了警告 WELD-000167: Class org.jboss.resteasy.core.AsynchronousDispatcher is annotated with @RequestScoped but it does not declare an appropriate constructor therefore is not registered as a bean!
这使我的 URI 正确注册为根并使 WebFilter 能够执行正确的链,因为它现在可以与 URI 中的每个组件区分开来。
像这样使用 jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="10.0"
xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_10_0.xsd">
<context-root>/api</context-root>
<security-domain>other</security-domain> <!-- Configure to the security domain used for your deployed application -->
<server-instance>default-server</server-instance>
<virtual-host>default-host</virtual-host>
</jboss-web>
我能够将上下文根覆盖为一个更漂亮的根。
如果您的 IDE 声明服务器实例元素错误,您可以忽略它,它仍然会正常工作。
最佳答案
在发布我的解决方案之前,我首先要感谢 ogulcan 和 Sebastian S,因为他们的帮助让我找到了正确的解决方案。
解决方案:
这删除了警告 WELD-000167: Class org.jboss.resteasy.core.AsynchronousDispatcher is annotated with @RequestScoped but it does not declare an appropriate constructor therefore is not registered as a bean!
这使我的 URI 正确注册为根并使 WebFilter 能够执行正确的链,因为它现在可以与 URI 中的每个组件区分开来。
像这样使用 jboss-web.xml:
http://www.jboss.org/j2ee/schema/jboss-web_10_0.xsd">
<context-root>/api</context-root>
<security-domain>other</security-domain> <!-- Configure to the security domain used for your deployed application -->
<server-instance>default-server</server-instance>
<virtual-host>default-host</virtual-host>
我能够将上下文根覆盖为一个更漂亮的根。
如果您的 IDE 声明服务器实例元素错误,您可以忽略它,它仍然会正常工作。
关于java - ApplicationPath 被 wildfly 忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55713164/
swagger-jaxrs 1.5.18 我在 @ApplicationPath("/docs") 处有一个应用程序,在其下有一个位于 @Path("/mydocs") 处的资源。因此,真正的端点是/
我正在尝试从 Visual Studio 代码以 Debug模式运行应用程序。当我单击调试时,出现以下错误: A JavaScript error occurred in the main proce
我需要获取我的 ASP.NET-MVC-5-Application 的 Base-/Application-Path。 我找到了两次获得它的机会,想知道哪个是更好的选择: UrlHelper.Cont
我一直在尝试在全局 asax 的 Application_Start 事件上获取我的项目的应用程序路径我可以在未路由的页面上使用 server.mappath 但是当我在路由页面上时我得到新的虚拟pa
我目前正在尝试设置我的第一个 Java-EE (JDK8) 应用程序,但无法覆盖上下文根以使用 @ApplicationPath 注释。正在使用的应用程序服务器是 Wildfly 16.0.0.Fin
我在 Grizzly 之上运行 Jersey 2.26-b09,并使用以下代码启动 Grizzly HTTP 服务器: public void start() { URI uri = UriB
在我的 razor View 中,我想将所有 jQuery 放入一个单独的 JS 文件中,然后使用 @Scripts.Render 在 View 上引用该文件。 在我看来,我有一个 jQuery 部分
在我的开发服务器上 HttpContext.Current.Request.ApplicationPath 正确返回路径,但在生产环境中它返回空。 为什么会这样? 我正在使用它来构建 URL,但现在在
环境 = JBoss 7.2.0.Final + RESTEasy 2.3.5.Final + Swagger 1.3.10 尝试设置一个没有 web.xml 的 WAR 并使用 Swagger。如果
根据JAXRS规范,@ApplicationPath可以用在接口(interface)上吗? import javax.ws.rs.ApplicationPath; @ApplicationPath(
我正在尝试在没有 web.xml 的情况下将基本的 jersey restful 服务部署到 Tomcat7: @WebServlet(loadOnStartup=1) @ApplicationP
有没有更编程的方式,相当于下面的配置: @ApplicationPath("api") public class MyResourceConfig extends ResourceConfig { ,
我正在寻找一种重写 url 的方法,以防 url 中的应用程序路径具有不同的大小写。由于应用程序路径可能因不同的部署而异,因此我需要动态访问它。有什么办法吗? 背景: 我正在将 cookie 的路径设
我正在从 Jboss 6.4/Java8 -> JBoss 7.2/Java11 转换应用程序,并且遇到错误,应用程序似乎忽略了我的端点注释并返回错误代码404. 您可以在日志中看到 Web 上下文的
有没有办法在一次调用中获取 HttpContext.Current.Request.Url.Host 和 HttpContext.Current.Request.ApplicationPath? 像“
我刚刚引导了一个 Intellij JAX-RS 项目,但在尝试运行时,我得到了样板代码提供的“/api/hello-world”的 404。 HelloServlet 在 Tomcat 10 上工作
使用这样的代码安全吗? Response.Cookies[cookieName].Path = Request.ApplicationPath + "/"; 我想知道所有极端情况,请... 最佳答案
我正在创建一个 mvc 应用程序,我将在子域下使用 http://myapp.mycompany.com 此子域指向应用程序子目录,但我的操作始终使用 applicationPath(子目录)生成,例
我想使用端点路径在 tomcat 上运行我的项目以下是我的两个 java 文件 这是我的应用类 package app; import javax.ws.rs.ApplicationPath;
我在项目中使用 Jersey 和 Spring。 'jersey-spring3' 用于它们之间的集成。我想让我的资源类更加灵活,并在 @Path 注释中使用属性,例如: @Path("${some.
我是一名优秀的程序员,十分优秀!