如何使用带码头的resourcebundles?

时间:2013-12-10 12:51:19

标签: jetty embedded-jetty resourcebundle

我的问题是如何在Jetty项目中包含ResourceBundles?

我有一个名为ServletEnvironment的Web服务项目 ServletEnvironment将我的服务导出为爆炸的war目录,其中包含:

  

[war目录] / WEB-INF / classes / {properties files}
  [战争目录] /WEB-INF/web.xml

ServletEnvironment实现了我的JettyWeb项目中的类 JettyWeb启动一个码头服务器,如下所述:

Server server = new Server(port);
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/test");
webapp.setResourceBase("[war directory]//");
HandlerList hlist = new HandlerList();
hlist.addHandler(webapp);
server.setHandler(hlist);
server.start();

最后我有一个Servlet项目,Servlet在我的ServletEnvironments web.xml中引用如下:

<!-- Listener -->
  <listener>
    <listener-class>com.basicservlet.BasicListener</listener-class>
  </listener>
  <!-- Servlet -->
  <servlet>
    <servlet-name>basicServlet</servlet-name>
    <display-name>Default Basic Http Servlet</display-name>
    <servlet-class>com.basicservlet.BasicHttpServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- Default Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>basicServlet</servlet-name>
    <url-pattern>/servlet/</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>60</session-timeout>
    <!-- 60 minutes -->
  </session-config>

在我的Servlet中,我尝试:

ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale);

返回null。

在我的JettyWeb中,在server.start()之后我尝试:

URL rs = this.getClass().getResource(propertiesDir);
System.out.println("Found: " + rs.toString());

它也返回null。 虽然我不相信会有人工作。

任何帮助都会非常感谢。

1 个答案:

答案 0 :(得分:0)

Properties properties;
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("application.properties");
properties = new Properties();
properties.load(inputStream);
String value = properties.getProperty(key);

这适用于我使用embedded-jetty的情况,application.properties位于类路径