4

我在 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 {...

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

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

4

1 回答 1

4

看起来 DefaultWeb 是由此处的WhiteBoard 类中名为default.web的配置创建的:

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();
                    }
                }

            },

查看捆绑激活器,如果您将配置default.web设置为 false,它将禁用默认页面。

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

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

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

default.web=false
于 2019-10-24T20:06:55.970 回答