如何使用jetty在karaf的不同端口启动OSGi捆绑包

如何使用jetty在karaf的不同端口启动OSGi捆绑包,jetty,osgi,apache-karaf,osgi-bundle,pax-web,Jetty,Osgi,Apache Karaf,Osgi Bundle,Pax Web,我有多个OSGi bundle,希望从不同的端口公开这些bundle。基本上,bundles有restapi,我想在不同的端口上运行API 我的restapi包jars具有jaxrs:server配置 <jaxrs:server id="services" address="/logger"> </jaxrs:server> 我可以使用下面提供的配置启动多个连接器 <Call name="addConnector"> <Arg>

我有多个OSGi bundle,希望从不同的端口公开这些bundle。基本上,bundles有restapi,我想在不同的端口上运行API

我的restapi包jars具有jaxrs:server配置

 <jaxrs:server id="services" address="/logger">

 </jaxrs:server>

我可以使用下面提供的配置启动多个连接器

 <Call name="addConnector">
    <Arg>
        <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <Set name="host">
                <Property name="jetty.host" />
            </Set>
            <Set name="port">
                <Property name="jetty.port" default="8282" />
            </Set>
            <Set name="maxIdleTime">300000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
            <Set name="lowResourcesConnections">20000</Set>
            <Set name="lowResourcesMaxIdleTime">5000</Set>
            <Set name="name">jettyConn2</Set>
        </New>
    </Arg>
</Call>

300000
2.
假的
8443
20000
5000
jettyConn2

是的,只要您的JAXR由不同的servlet提供服务,这些servlet在不同的web应用程序包(WAB)中配置。 您需要确保所有应用程序包都包含所需的标题:

WebContext-Path: /logger
Web-Connectors: jettyConn2

除非您的jaxrs框架有一个使用自己的WebContext路径注册的中心servlet,否则这应该适合您

谢谢。这解决了我的问题。但现在的问题是服务可以从两个URL访问。例如/cxf/logger和/logger/logger。因为cxf是默认的servlet,我想我们不能删除它。如何将配置更改为仅从一个URL访问?请查看有关CXF的文档,可以为其切换到另一个路径。