- 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/
我正在尝试设置我的 git 配置,以便我可以使用工作环境和个人环境。 这是我的 ~.gitconfig 文件的内容(碰巧 work 和 private 在 github 上): [url "git@
我有以下情况。我在 Sheet1 上有一个项目列表,我想将项目复制到 Sheet2 并排除特定项目。 假设我在 Sheet1 上有以下项目列表: 我想将“梨”单元格留在 Sheet2 上。 它应该完全
我试图让 gcc 以不同的语言提供错误消息。但它仍然给我英文的错误信息。 我的语言环境输出 varun@varun-desktop:$ 语言环境 LANG=en_IN LC_CTYPE="es_EC.
我在 Linux x86 上使用 gcc。 我的程序将指向 C 函数的指针导出到 LLVM JIT 函数。调用约定是 cdecl。它在 Windows 上的 MingW 上运行良好。但是奇怪的事情发生
windows 上 php 的奇怪问题...我的应用程序加载了一个“核心”文件,该文件加载了一个设置文件、注册自动加载、进行初始化等。在核心文件的顶部我有 include_once("config.p
在工具|选项|调试器选项 |语言异常可以忽略特定的异常类型。是否可以为每个项目定义这个?例如在调试构建配置中(Delphi 2009 和/或 2010)? /编辑:Reported in QC 最佳答
我在一个文本框旁边有 2 个按钮,在这 2 个按钮后面还有另一个文本框。第一个文本框的 tabindex 为 1000,第一个按钮为 1001,第二个按钮为 1002。第二个文本框的 tabindex
我是 python 新手,正在尝试类型提示,但它们似乎只在某些情况下起作用。它们似乎在属性返回类型上按预期工作,但是当我尝试将整数分配给字符串值(即 self._my_string = 4)时,我没有
问题陈述 我有一些国家和这些国家的州的依赖组合框。我使用 VBA 在第一个组合框中填充唯一值,然后在第二个组合框中动态填充唯一值。该代码似乎忽略了初始传递中的条件。 例如,该代码适用于第一个国家/地区
我对 Javascript 有点陌生。我试图做到这一点,以便单击一个页面上的图像会将您带到一个新页面,并在该新页面上显示特定的 div,因此我使用 sessionStorage 来记住并使用 bool
我不确定我是否正确地处理了这个问题。 我有一个 ASP.NET MVC Web 应用程序。有 4 个主要“页面”通过单击菜单选项,可以选择一个页面,并将该页面选项存储在本地存储中。 现在,如果我刷新页
我的页面工作正常,并按预期显示日期和时间,直到我不得不添加 new Date() 以避免 momentjs deprecation warning 。现在我的约会比应有的时间晚了 5 个小时。 我该如
我需要合并一个 fork 项目。不幸的是,CVS $Id 行不同,因此我尝试的合并工具报告所有文件都不同(其中 95% 只有这一行不同) 是否有一个合并工具可以配置为忽略基于模式的行比较结果? [编辑
我是 python 新手,正在尝试类型提示,但它们似乎只在某些情况下起作用。它们似乎在属性返回类型上按预期工作,但是当我尝试将整数分配给字符串值(即 self._my_string = 4)时,我没有
我正在尝试根据 How do a send an HTTPS request through a proxy in Java? 使用代理访问 https 网页 但是我遇到了一个奇怪的问题:HttpsU
我有一个简单的 CMakeLists.txt 文件: cmake_minimum_required(VERSION 2.8.9) project (sample) add_library(Shared
这个问题在这里已经有了答案: typedef pointer const weirdness (6 个答案) 关闭 8 年前。 我有一个结构体 type_s。然后我将指向 struct type_s
我正在尝试制作一个使用 AES 256 加密的应用程序。不幸的是我无法让它工作。也许我没有完全理解密码逻辑。 所以它正在工作,但据我了解,哈希包含密码。但如果我更改密码,输出是相同的。因此,Crypt
我的文件包含一些行,例如 "This is a string." = "This is a string's content." " Another \" example \"" = " New ex
我尝试使用此查询来获取所选健身房的所有用户。 我的问题是查询忽略了这部分:ual.user_id = weekUsers.user_id 查询似乎获取了与我选择的日期匹配的所有用户 ID,而不检查该用
我是一名优秀的程序员,十分优秀!