gpt4 book ai didi

java - 如何在 CXF 拦截器上下文中使用 @Inject 或 @EJB?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:06 28 4
gpt4 key购买 nike

有没有办法在 CXF 拦截器中使用 @Inject 或 @EJB?我知道我仍然可以执行 JNDI 查找,但我宁愿避免它。

我觉得很奇怪,JAX-WS 处理程序是受管理的,但 CXF 拦截器不是。有没有可能让他们管理?我正在使用注释将我的拦截器添加到端点(@org.apache.cxf.interceptor.InInterceptors@org.apache.cxf.interceptor.InInterceptors),可以用配置文件处理吗?

配置:

  • Java 6
  • JBoss EAP 6.1 (AS 7.2)
  • CXF 2.6.6

最佳答案

我已经在 CDI 1.1 的帮助下进行了注入(inject),如下所示。

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

cxf-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="callerInfoInterceptor" class="my.CallerInfoInterceptor" />

<cxf:bus>
<cxf:inInterceptors>
<ref bean="callerInfoInterceptor" />
</cxf:inInterceptors>
<cxf:properties>
......
.....
</cxf:properties>
</cxf:bus>

</beans>

CallerInfoInterceptor.java(CXF拦截器)

public class CallerInfoInterceptor extends AbstractPhaseInterceptor<Message>  {

@Inject CallerInfoBean callerInfo; // bean

public CallerInfoInterceptor() {
super(Phase.RECEIVE);
}

@Override
public void handleMessage(Message message){
...........

if (callerInfo == null) {
callerInfo =
javax.enterprise.inject.spi.CDI.current().select(CallerInfoBean.class).get();
}
}

关于java - 如何在 CXF 拦截器上下文中使用 @Inject 或 @EJB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32135234/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com