【问题标题】:Shut the default web page of Apache Aries down关闭 Apache Aries 的默认网页
【发布时间】:2020-02-18 12:03:38
【问题描述】:

我在 karaf 中使用 Apache Aries。我已经在一个单独的包中设置了我的主页。问题是当我停止我的“web-home”包时,我看到了 apache aries 默认页面。

在 karaf-logs 中,我看到默认页面总是被调用。

"WARN JAXRSUtils  - Both org.apache.aries.jax.rs.whiteboard.internal.DefaultWeb#home and my.packet.Home#home are equal candidates for handling the current request which can lead to unpredictable results"

这就是我的Home.java 的样子:

@Path("/")
@Component(
    property = {
        JaxrsWhiteboardConstants.JAX_RS_APPLICATION_SELECT + "=(osgi.jaxrs.name=.default)",
        JaxrsWhiteboardConstants.JAX_RS_RESOURCE + "=true"
    },
    service = Home.class
)
public class Home {...

那么,如何配置白羊座以关闭其主页,或者以其他方式阻止这种潜在的不可预测的结果?

如果被问到,我很乐意澄清更多必要的细节。提前致谢。

【问题讨论】:

    标签: jax-rs apache-karaf blueprint-osgi aries


    【解决方案1】:

    看起来 DefaultWeb 是由一个名为 default.web 的配置在WhiteBoard class 创建的:

    return OSGi.register(
                Application.class,
                () -> new DefaultApplication() {
    
                    @Override
                    public Set<Object> getSingletons() {
                        Object defaultApplication = _configurationMap.get(
                            "default.web");
    
                        if (defaultApplication == null ||
                            Boolean.parseBoolean(defaultApplication.toString())) {
    
                            return Collections.singleton(new DefaultWeb());
                        }
                        else {
                            return Collections.emptySet();
                        }
                    }
    
                },
    

    查看bundle activator 看起来,如果您将配置 default.web 设置为 false,它将禁用默认页面。

    为此,请创建或查找此文件:

    .../etc/org.apache.aries.jax.rs.whiteboard.default.cfg
    

    (这是这个包的默认配置文件。作为一般规则,默认配置文件是:../etc/&lt;Persistent ID of Bundel.cfg) 并添加/设置这一行:

    default.web=false
    

    【讨论】:

    • 看起来它使用 ConfigAdmin 来设置属性,所以如果你在 karaf /etc 文件夹中创建一个名为 org.apache.aries.jax.rs.whiteboard.cfg 的文件,它应该连接到捆绑并从那里获取属性。
    • 或 org.apache.aries.jax.rs.whiteboard.default.cfg,因为 Aries JaxRS 白板包的 PID 是 org.apache.aries.jax.rs.whiteboard.default。
    猜你喜欢
    • 2018-06-17
    • 2012-02-10
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多