Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Pax Web中创建Jetty连接器_Jetty_Apache Karaf_Karaf_Pax_Pax Web - Fatal编程技术网

在Pax Web中创建Jetty连接器

在Pax Web中创建Jetty连接器,jetty,apache-karaf,karaf,pax,pax-web,Jetty,Apache Karaf,Karaf,Pax,Pax Web,是否有可能(API)通过PaxWeb以编程方式添加Jetty连接器。PaxWeb内部使用了一个漂亮的JettyServer接口,但似乎没有OSGi服务可用。必须可用的端口事先未知,因此我无法使用jetty.xml进行配置 有人有什么想法吗?因为您似乎只是想更改端口,所以应该使用OSGi的方式进行更改,并使用适当的配置配置pax web。另见此处: 正在讨论的配置是 org.osgi.service.http.port 此端口可由配置管理服务配置。如果配置发生更改,jetty服务器将重新启动 关于

是否有可能(API)通过PaxWeb以编程方式添加Jetty连接器。PaxWeb内部使用了一个漂亮的
JettyServer
接口,但似乎没有OSGi服务可用。必须可用的端口事先未知,因此我无法使用
jetty.xml
进行配置


有人有什么想法吗?

因为您似乎只是想更改端口,所以应该使用OSGi的方式进行更改,并使用适当的配置配置pax web。另见此处:

正在讨论的配置是 org.osgi.service.http.port

此端口可由配置管理服务配置。如果配置发生更改,jetty服务器将重新启动


关于服务的最初问题,目前还不可能这样做,但是有一个JIRA问题,我们非常感谢您的贡献

从PaxWeb 4.1.0开始,您可以通过将连接器注册为服务来注册所需的连接器(例如,它允许排除针对Poodle漏洞的SSL协议)

SslContextFactory contextFactory=new SslContextFactory();
addExcludeProtocols(“SSLv2Hello”、“SSLv3”);
setkeystrepath(“路径到密钥库”);
setKeyStorePassword(“KEYSTORE\u密码”);
setTrustStore(“路径到信任库”);
setTrustStorePassword(“TRUSTSTORE_密码”);
setNeedClientAuth(true);
setWantClientAuth(true);
连接器sc=新的SslSelectChannelConnector(contextFactory);
sc.setPort(8443);
ServiceRegistrationRegisterService=bundleContext.registerService(Connector.class,sc,null);

主要取自pax web文档

问题在于我需要几个端口(不止一个),并且我想将每个提供程序绑定到一个特定的端口。属性
org.osgi.service.http.port
只允许一个端口。这还不够。在这种情况下,是的,这可能是一个很好的增强。欢迎捐款。:-)好的,下一个版本是4.1。我会为这个做点什么,看看这听起来真的很好。。。一个非常好的解决方案是创建一个同样使用OSGi声明性服务的解决方案。我们可以使用配置管理员的功能,并将连接器实例绑定到其配置(ManagedServiceFactory)。我多次这样做,它将为您提供一个非常灵活的解决方案,允许从外部创建和(重新)配置连接器实例。我已经实现了一个基于Equinox HTTP服务的手工解决方案。它可以工作,但现在必须在ApacheKaraf中运行,我的解决方案不完全适合这种环境。它正在工作,但是依靠一个官方的实现会很好。也许将来可以通过Pax Web 4.1和Apache Karaf 4.0;-)我使用的是Jetty 9.2.x,类
SelectChannelConnector
SslSelectChannelConnector
不再可用。现在有了类
ServerConnector
,它需要
Server
进行实例化,而PaxWeb没有公开该类。
    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);