如何使用管理配置服务动态地从休息服务 URL 中删除 CXF
How to remove CXF from rest service URL dynamically using admin config services
我是 OSGI 新手。我使用 cxf 和 blueprint 开发了学生休息服务。将其部署在 karaf 中。默认情况下,karaf 在其 URL 中有 cxf。我发现我可以在 etc 文件夹中配置 属性(org.apache.cxf.servlet.context=/student) 或者我可以在 karaf 中配置 运行 config:edit/setprop/update/ 命令。这样我就可以用一些自定义值替换 url 中的 cxf。但现在我想从我的 url 中删除 CXF,而不对 karaf 进行上述任何更改。还有其他方法可以做同样的事情吗?我发现使用管理配置服务和配置我可以更新上面的 属性 但它不起作用。
我提到了以下 link:
- 它对我不起作用。
我正在使用蓝图,我需要添加任何额外的东西吗?以及我必须传递给 createFactoryConfiguration 的 factorypid 和位置到底是什么。
提前致谢。
我找到了解决问题的方法。将以下代码添加到激活器的启动方法。
Dictionary<String, String> props = new Hashtable<String, String>();
props.put( "org.apache.cxf.servlet.context", "/student" );
// Use OSGI admin configuration to update CXF url
ServiceReference reference = context.getServiceReference( ConfigurationAdmin.class.getName() );
ConfigurationAdmin admin = (ConfigurationAdmin) context.getService( reference );
try
{
Configuration config = admin.getConfiguration( "org.apache.cxf.osgi", null );
config.update( props );
}
catch ( Exception exception )
{
throw exception;
}
无需对 blueprint.xml 进行任何更改。它适用于 karaf 和 equinox。最初我在 equinox 中尝试没有将位置参数传递给 getConfiguration() 因此它不起作用。
我是 OSGI 新手。我使用 cxf 和 blueprint 开发了学生休息服务。将其部署在 karaf 中。默认情况下,karaf 在其 URL 中有 cxf。我发现我可以在 etc 文件夹中配置 属性(org.apache.cxf.servlet.context=/student) 或者我可以在 karaf 中配置 运行 config:edit/setprop/update/ 命令。这样我就可以用一些自定义值替换 url 中的 cxf。但现在我想从我的 url 中删除 CXF,而不对 karaf 进行上述任何更改。还有其他方法可以做同样的事情吗?我发现使用管理配置服务和配置我可以更新上面的 属性 但它不起作用。
我提到了以下 link:
我正在使用蓝图,我需要添加任何额外的东西吗?以及我必须传递给 createFactoryConfiguration 的 factorypid 和位置到底是什么。
提前致谢。
我找到了解决问题的方法。将以下代码添加到激活器的启动方法。
Dictionary<String, String> props = new Hashtable<String, String>();
props.put( "org.apache.cxf.servlet.context", "/student" );
// Use OSGI admin configuration to update CXF url
ServiceReference reference = context.getServiceReference( ConfigurationAdmin.class.getName() );
ConfigurationAdmin admin = (ConfigurationAdmin) context.getService( reference );
try
{
Configuration config = admin.getConfiguration( "org.apache.cxf.osgi", null );
config.update( props );
}
catch ( Exception exception )
{
throw exception;
}
无需对 blueprint.xml 进行任何更改。它适用于 karaf 和 equinox。最初我在 equinox 中尝试没有将位置参数传递给 getConfiguration() 因此它不起作用。