如何从代码访问jetty服务器的XML中指定的配置

时间:2017-09-26 11:30:26

标签: java xml jetty

我有一个jetty Server,我想为HTTPS流量配置,我可以做到这一点,只需修改一些XML和ini文件(因为这个IoC是首选方式),但是我想访问其中一些是在xml中从其他类配置的,这是在xml:

<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
  <Set name="KeyStoreType">PKCS12</Set>
  <Set name="KeyStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.keystore" default="etc/keystore"/></Set>
  <Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
...

我想要的是在我的代码库中的某处调用sslContextFactory.getKeyStorePath()函数。但是这个sslContextFactory实例在哪里,我在哪里可以找到它,我怎么能有它的引用呢?

2 个答案:

答案 0 :(得分:0)

我并不完全清楚你在问什么,但无论如何我都要去捅它。听起来您熟悉Jetty作为分发和编辑Jetty XML和ini文件,但现在想要将一些Jetty功能用作嵌入代码的一部分吗?

具体来说,对于SSLContextFactory,该类包含在distribution附带的jetty-util jar文件中。您也可以在Maven Central上单独下载该jar文件。

Jetty的官方文档包含几个嵌入式Jetty功能的例子。这个page可以为您提供帮助,特别是Multiple Connectors上使用SSL的示例。

答案 1 :(得分:0)

事实上,它不太可能访问jetty独立服务器的SSLContextFactory。根据定义,Jetty可以同时托管多个应用程序,并且就像这些Java Web应用程序的容器一样。

一个选项可能是使用嵌入式jetty服务器(a solution here),您可以在java应用程序(例如jar包)中启动jetty服务器并保存对SSLContextFactory实例的引用,以便您可以随时重新加载它。

另一个选项可能是使用maven jetty runner,再次来自另一个自定义应用程序,自己控制SslContextFactory。我现在无法确认,我会在尝试后立即更新。