当前位置: 首页 > 面试题库 >

WildFly-从WAR获取资源

朱和惬
2023-03-14
问题内容

我正在使用以下方法从WildFly中的WAR文件获取资源:

this.getClass().getResource(relativePath)

当应用程序作为爆炸式WAR部署时,它可以工作。 它也曾经 与压缩的WAR一起 使用
。昨天,我在Eclipse中进行了项目的干净和重建,但它刚刚停止工作。

当我检查资源根目录时:

logger.info(this.getClass().getResource("/").toExternalForm());

我得到这个:

file:/C:/JBoss/wildfly8.1.0.CR1/modules/system/layers/base/org/jboss/as/ejb3/main/timers/

因此,难怪它不起作用。它可能与JBoss模块加载有关,但是我不知道这是错误还是正常行为。

我在StackOverflow上发现了各种类似的问题,但没有适用的解决方案。建议之一是像这样使用ServletContext:

@Resource
private WebServiceContext wsContext;
...
ServletContext servletContext = (ServletContext)this.wsContext.getMessageContext()
        .get(MessageContext.SERVLET_CONTEXT);
servletContext.getResource(resourcePath);

但是,当我尝试以这种方式获取MessageContext时,得到了IllegalStateException。所以我基本上被困住了。有任何想法吗?


问题答案:

我最终放弃了,并将资源文件放入一个新的JBoss模块中,如本链接所述。

https://community.jboss.org/wiki/HowToPutAnExternalFileInTheClasspath

它可以工作,但缺点是有两个部署目标,因此情况更加复杂。从好的方面来说,WAR文件的大小减小了,并且如果只有部分资源发生了更改,我不必重新部署应用程序



 类似资料:
  • 多亏了约书亚我才想通的。

  • 大家好,我正在尝试使用Java建立redis服务器。我的Redis服务器是linux服务器,ulimit无限。 这里是创建连接的spring bean 公共类JedisService实现IJedisService,InitializingBean,DisposableBean{private JedisPool JedisPool;

  • 这里有一个案例:我有身份服务器、客户端应用程序和资源(API)。身份服务器在endpoint超文本传输协议://身份服务器: 8080/连接/用户信息上提供用户信息。如果您发送带有有效访问令牌的请求,您将获得有关用户的其他信息。如果我需要有关资源的这些信息,我将如何获得它。我有两个想法: 通过客户端获取用户信息。(客户端在userinfoendpoint上发送请求并获取信息,然后使用请求调用API

  • 问题内容: 我正在寻找一种从给定的classpath目录中获取所有资源名称的列表的方法,例如。 例如,给定一个路径目录包含文件和子目录应该返回一个List 包含下列字符串: 。 它应该同时适用于文件系统和jar中的资源。 我知道我可以用Files,JarFiles和URLs编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是getResourceName

  • 问题内容: 我需要将资源ID传递给我的一个类中的方法。它既需要使用引用指向的id,也需要使用字符串。我应该如何最好地做到这一点? 例如: 我需要获取它的整数ID,但是我还需要访问字符串“ icon”。 如果我只需要传递给该方法的是“ icon”字符串,那将是更好的选择。 问题答案: 我不知道那个存在。 在我的项目中,我使用以下代码来做到这一点: 这样将用于获取资源整数值的值 我刚刚找到了一篇博客文

  • 启动jar时,控制台会说找不到文件,也没有加载字体。我怎样才能解决这个问题? 我得到了这个密码: