【发布时间】:2014-12-23 11:11:52
【问题描述】:
是否有可能 (API) 通过 Pax-Web 以编程方式添加 Jetty 连接器。 Pax-Web 内部使用了一个不错的JettyServer 接口,但似乎没有可用的OSGi 服务。事先不知道必须可用的端口,所以我不能使用jetty.xml 进行配置。
有人有想法吗?
【问题讨论】:
标签: jetty apache-karaf karaf pax pax-web
是否有可能 (API) 通过 Pax-Web 以编程方式添加 Jetty 连接器。 Pax-Web 内部使用了一个不错的JettyServer 接口,但似乎没有可用的OSGi 服务。事先不知道必须可用的端口,所以我不能使用jetty.xml 进行配置。
有人有想法吗?
【问题讨论】:
标签: jetty apache-karaf karaf pax pax-web
由于您似乎只是想更改端口,因此您应该使用 OSGi 方式并使用适当的配置配置 pax web。也可以在这里查看:https://ops4j1.jira.com/wiki/display/paxweb/Basic+Configuration
有问题的配置是 org.osgi.service.http.port
此端口可以通过配置管理服务进行配置。如果配置更改,码头服务器将重新启动。
关于服务的最初问题,目前还不可能,但存在可用的 JIRA 问题,我们非常感谢您的贡献。
【讨论】:
org.osgi.service.http.port 属性只允许一个端口。这还不够。
从 PaxWeb 4.1.0 开始,您可以通过将它们注册为服务来注册所需的连接器(例如,它允许针对 Poodle 漏洞排除 SSL 协议)
SslContextFactory contextFactory = new SslContextFactory();
contextFactory.addExcludeProtocols("SSLv2Hello", "SSLv3");
contextFactory.setKeyStorePath("PATH_TO_KEYSTORE");
contextFactory.setKeyStorePassword("KEYSTORE_PASSWORD");
contextFactory.setTrustStore("PATH_TO_TRUSTSTORE");
contextFactory.setTrustStorePassword("TRUSTSTORE_PASSWORD");
contextFactory.setNeedClientAuth(true);
contextFactory.setWantClientAuth(true);
Connector sc = new SslSelectChannelConnector(contextFactory);
sc.setPort(8443);
ServiceRegistration<Connector> registerService = bundleContext.registerService(Connector.class, sc, null);
主要取自pax web文档http://ops4j.github.io/pax/web/SNAPSHOT/
【讨论】:
SelectChannelConnector 或 SslSelectChannelConnector 不再可用。现在有类 ServerConnector 需要 Server 进行实例化,PaxWeb 没有公开。