gpt4 book ai didi

java - JAX-RS 和 WildFly 的应用程序/部署特定属性

转载 作者:行者123 更新时间:2023-11-30 08:12:05 26 4
gpt4 key购买 nike

我习惯了 Tomcat/Jetty 上的 Spring,现在致力于在 WildFly (RESTEasy) 上运行的现有 JAX-RS 项目。

我想知道应用程序/部署属性文件在 WildFly 上的位置,standalone/configuration/myapp.properties?

那么应用程序如何加载它们呢?我尝试在我们的类中扩展 javax.ws.rs.core.Application:

@javax.ws.rs.ApplicationPath("")
public class ApplicationConfig extends Application {

@Override
public Map<String, Object> getProperties() {
System.out.println(">>>>>>>>>>>>>>>> get properties");
// I added this method but nothing is printed...
}

@Override
public Set<Class<?>> getClasses() {
System.out.println(">>>>>>>>>>>>>>>> get classes");
// This is printed
...
// classes are loaded correctly
}
}

那么我如何访问 Controller 中的属性?顺便说一句,我们不使用依赖注入(inject)。

谢谢!

最佳答案

一些调查...

通常应该工作

  1. 应在启动时调用 getProperties() 以加载任何所需的应用程序属性。
  2. 您应该能够注入(inject) javax.ws.rs.core.Configuration进入您的资源类(使用 @Context)并通过该对象检索属性。 javadoc 中有说明

    This interface can be injected using the Context annotation.

测试

@ApplicationPath("/api")
public class RestApplication extends Application {

@Override
public Map<String, Object> getProperties() {
System.out.println(">>>>>>>>>>>>>>>> get properties");
Map<String, Object> props = new HashMap<>();
props.put("message", "Hello Configuration Properties!");
return props;
}
}

@Path("config")
public class ConfigResource {

@Context
private Configuration configuration;

@GET
public Response getProperty(@QueryParam("prop") String prop) {
String propValue = (String)configuration.getProperty(prop);
return Response.ok(propValue).build();
}
}

发现

  • 根据我使用 Resteasy 3.0.9.Final 的测试,上述内容不起作用。我收到一些有关此类型没有上下文的错误。我不知道为什么。可能是一个错误,我不知道。也许你可以研究一下。
  • 上述内容适用于 Jersey 2.16

Resteasy 的工作原理

可以与Resteasy合作是将Application(如上所述here)注入(inject)到资源中(也可以使用@Context )并以这种方式获取属性。

@Path("config")
public class ConfigResource {

@Context
Application application;

@GET
public Response getProperty(@QueryParam("prop") String prop) {
String propValue = (String)application.getProperties().get(prop);
return Response.ok(propValue).build();
}
}

关于java - JAX-RS 和 WildFly 的应用程序/部署特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30248956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com