카멜에서 Karl을 청사진 xml과 함께 사용하고 있는데 다른 번들에서 오는 클래스로 콩을 만들고 싶습니다.외부 번들에서 청사진으로 빈 만들기
<blueprint>
...
<bean id="token-validation" class="com.xxx.security.JwtTokenValidator" init-method="init" >
<property name="realm" value="${auth.realm}"/>
</bean>
...
<camelContext>
<route id="route.EventsNotify" routePolicyRef="token-validation">
...
</camelContext>
</blueprint>
JwtTokenValidator 클래스는이 경로 route.EventsNotify에 적용되는 그 이유는, 낙타의 RoutePolicySupport을 확장 다른 번들에 있습니다.
public class JwtTokenValidator extends RoutePolicySupport {
@Override
public void onExchangeBegin(Route route, Exchange exchange) {
super.onExchangeBegin(route, exchange);
checkAuthorizationHeader(exchange);
}
...
}
이 묶음은 많은 프로젝트에서 사용하기 위해 앞서 언급 한 것과 같은 몇 가지 종속성과 클래스를 가지고 있습니다. 같은 코드를 몇 번이고 반복해서 쓰는 대신 한 번 쓰고 많은 프로젝트에 적용합니다.
불행하게도이 작동하지 않습니다, 나는 클래스가 RoutePolicySupport을 확장하기 때문에 측면에서 원하는 RoutePolicy 인터페이스를 구현하는 이유는, 내가 이해할 수없는 스택 트레이스
Caused by: java.lang.ClassCastException: Cannot cast com.xxx.security.JwtTokenValidator to org.apache.camel.spi.RoutePolicy
에서 다음과 같은 오류를 얻고있다.
클래스를 동일한 번들로 이동하면 작동하지만 이전에 설명한 이유 때문에 별도의 번들로 사용해야합니다.
누군가 내가 틀린 곳을 알려주겠습니까?
고맙습니다.
봐, 당신은 서비스/참조 또는 뭔가 (캔트 리콜로 설정 다르게이 조금 필요 내 머리 위에 100 %) –
각 낙타에 연결된 낙타를 확인하십시오. Bean이 다른 클래스 로더에 의해로드 된'RoutePolicy' 인터페이스를 구현할 수도 있습니다. 카라프에 카멜을 어떻게 설치 했습니까? –
전체 Apache Karaf를 어셈블리하는 karaf-maven-plugin을 사용하고 있습니다. Camel은 해당 플러그인의 startupFeatures로로드됩니다. –