заставить class.getResource(«/some.properties») работать

#java #jsp #websphere-liberty

#java #jsp #websphere-liberty

Вопрос:

Этот JSP

 <html><head><title><%=application.getServerInfo() %></title></head><body>

  <%= javax.servlet.http.HttpServlet.class.getResource("/test.properties") %>

</body></html>
  

выводит на Apache Tomcat /9.0.37

 file:/projekte/apache-tomcat-9.0.37/lib/test.properties
  

В IBM WebSphere Liberty / 20.0.0.9 я получил null.

Как я могу загрузить ресурс?

Я пытался с

 test.properties in usr/servers/luna/lib/global
  

и

 <library id="tr">
   <folder dir="${server.config.dir}/lib/tr" />
</library>    

<webApplication location="tr.war" type="war">
      <classloader classProviderRef="tr" />
   </webApplication>
  

Я бы не стал использовать ServletContext.getResource(), потому что моя реальная проблема находится в классе ear / lib.

Ответ №1:

Это не classProviderRef, а commonLibraryRef .

 <classloader commonLibraryRef="tr" />
  

Тем не менее, ресурс найден, только если getResource() вызывается для класса из внутри приложения, например, из скомпилированного JSP com.ibm._jsp._resource .

 <%= getClass().getResource("/test.properties") %>
  

выводит

 file:/wlp/wlp-javaee8-20/usr/servers/luna/lib/tr/test.properties