- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我有 2 个 bundle 。两者都使用 cxf 创建 Restful 服务器。在这些包中,我通过蓝图加载了 cxf。我在那些具有相同 id 的包上定义了 cxf:bus 以期望两个包将共享相同的总线实例,然后我可以在一个包上配置身份验证拦截器,它也将应用于另一个包。它们如下所示。
bundle 1:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
xmlns:cxf="http://cxf.apache.org/blueprint/core"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
">
<bean id="authInterceptor" class="com.dasannetworks.vn.rest.impl.AuthInterceptorImpl"></bean>
<cxf:bus id="my-app-bus" name="tutorial">
<cxf:inInterceptors>
<ref component-id="authInterceptor"/>
</cxf:inInterceptors>
</cxf:bus>
<bean id="Rest1ServiceImpl"class="com.dasannetworks.vn.rest.impl.Rest1ServiceImpl"></bean>
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="serializeAsArray" value="true"/>
<property name="dropRootElement" value="true"/>
<property name="supportUnwrapped" value="true"/>
</bean>
<jaxrs:server id="custom1Service" address="/rest1">
<jaxrs:serviceBeans>
<ref component-id="rest1ServiceImpl"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref component-id="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
bundle 2:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
xmlns:cxf="http://cxf.apache.org/blueprint/core"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
">
<cxf:bus id="my-app-bus" bus="tutorial"></cxf:bus>
<bean id="rest2Service" class="com.dasannetworks.vn.rest2.impl.Rest2ServiceImpl" />
<jaxrs:server id="custom2Service" address="/rest2">
<jaxrs:serviceBeans>
<ref component-id="rest2Service"/>
</jaxrs:serviceBeans>
安装并运行后:结果:所有对“/cxf/rest1/”的请求都会遇到 authInterceptor 而对“cxf/rest2”的所有请求都不会。
谁能给我一些关于如何在两个包上共享相同的 cxf:bus 的建议?先感谢您。
最佳答案
由于我无法用蓝图解决这个问题,所以我换了一种方法来修复它。我使用 Activator 启动了 CXF Bus Rest Server,而不是蓝图。
Bundle 1 激活器:在 bundle 1 中,我获得默认总线并在其上添加身份验证拦截器,然后在其上注册一个 Rest Server 端点。
public void start(BundleContext bundleContext) throws Exception {
Bus defaultBus = BusFactory.getDefaultBus();
defaultBus.setId("my-app-bus");
BusFactory.clearDefaultBusForAnyThread(defaultBus);
System.out.println(this.getClass().getName());
System.out.println(defaultBus.getId());
defaultBus.getInInterceptors().clear();
defaultBus.getInInterceptors().add(new AuthInterceptorImpl());
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setBus(defaultBus);
sf.setAddress("/tutorial");
sf.setServiceClass(HelloRestServiceImpl.class);
sf.create();
}
在 bundle 2 中,Bundle 2 激活器我获得默认总线,为 Rest Server 注册并设置该总线。
@Override
public void start(BundleContext bundleContext) throws Exception {
Bus defaultBus = BusFactory.getDefaultBus();
List<Interceptor<? extends Message>> inInterceptors = defaultBus.getInInterceptors();
for(Interceptor interceptor: inInterceptors) {
System.out.println( interceptor.getClass().getName());
}
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setBus(defaultBus);
sf.setAddress("/Rest2");
sf.setServiceClass(Rest2ServiceImpl.class);
sf.create();
}
==> 结果:两个包现在使用相同的总线,并且包 2 可以遇到我也在包 1 上注册的身份验证拦截器。 !!!
关于cxf - 如何分享cxf :bus over multiple osgi bundles on karaf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031872/
所以我有这个要求,它接收一个文档,然后需要在输出中创建一个或多个文档。 在这个过程中,需要判断文档是否已经存在,因为申请创建和更新场景有不同的操作。 在直接代码中,这会很简单(概念上) InputDa
我想知道在 IBM Integration Bus 中存储数据库参数的最佳位置在哪里。例如,如果我们有开发、测试和生产环境,每个环境都有一个单独的数据库(当然),那么如何最好地组织数据库连接属性的更改
我正在从事一个项目,在该项目中,我必须与连接的任何设备(ttyS0、ttyS1 或 ttyUSB0)进行一些串行通信。幸运的是,我遇到了一个非常有用的 stackoverflow 链接:“Simple
企业服务总线(ESB)、.NET 服务总线(Windows Azure AppFabric 服务总线)、NServiceBus、RhinoServiceBus、MassTransit 等。 我试图了解
我现在使用Virtual Box启动VM,版本是5.1.26 r117224(Qt5.6.2),但是当我尝试启动VM时,我看到了下面的错误消息: 00:00:29.246866 VMMDev: Gue
从这个周末开始,我每小时都会从我的服务器收到一封邮件,其中包含以下消息: /etc/cron.hourly/mcelog.cron: mcelog: Cannot access bus thresho
Oracle 是否有两个 ESB 产品:Aqualogic Service Bus 和 Oracle Service Bus,或者 ALSB 是否合并到 Oracle SB 产品中? 最佳答案 目前,
为什么我的 RootManageSharedAccessKey 连接字符串无效? 代码: 执行下面的代码时,我收到有关无效连接字符串的错误: serviceBusClient <- new Servi
一 点睛 消息中间件提供了系统之间的异步处理机制,比如在电商网站上支付订单之后,会触发库存计算,物流调度计算,甚至是营销人员绩效计算,报表统计等,诸如此类的操作一般会耗费比订单购买商品本身更多的时间,
基本了解CANopen网络中PDO映射的概念。它允许广播带有小 header 的实时数据。 它是怎样炼成的?如何设置我的设备以了解如何发送/接收 PDO?我需要某种软件吗? 最佳答案 很多问题的答案取
我想知道我们如何计算某些标准 CAN id 集的软件接受过滤器掩码。如果有人可以用示例解释这一点,那就太好了。还请建议一些链接/ Material 来学习 CAN 堆栈软件实现。 提前致谢。 最佳
什么是消息总线 1. 概念 在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例, 它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线 2.
一 点睛 有这样一个场景,就是监控某个硬件设备的运行时数据,然后记录到数据库。 可以这样做:该硬件设备在运行的过程中,将一些性能信息等写入特殊的数据文件中,需要做的就是监控文件的变化,读取最后一行数据
I will use CANOpen in linux. In kernel, linux has socketcan and i have some questions for further im
我想用 corss_compiler D-bus 来武装。 工具链:arm-linux-gcc-3.4.1 配置选项:CC=arm-linux-gcc ./configure --prefix=/op
当您将多个连接连接到节点上的单个输出终端时会发生什么。 我找不到关于此的任何 IBM 文档,但工具包并没有阻止我这样做。 这只是一个例子,但我想知道当您对任何节点执行此操作时的一般行为,而不仅仅是输入
如何创建多个虚拟套接字并将它们链接在一起以创建虚拟总线? 我想模拟一个应用程序,其中许多节点通过 CAN 相互通信。 最佳答案 您所需要的只是 can-utils 中的 cangw 工具。 。创建两个
我正在使用Azure Service Bus SubscriptionClient.OnMessage方法;配置为最多同时处理5条消息。 在代码内,我需要等待所有消息完成处理后才能继续(正确关闭Azu
如何使用 C 列出 D-Bus sessionBus 中的所有名称? 我正在寻找C GIO相当于 dbus.list_names python method 我想列出“org.mpris.MediaP
这个问题已经有答案了: Why does modifying a string literal cause a segmentation fault? [duplicate] (1 个回答) 已关闭
我是一名优秀的程序员,十分优秀!