2016-07-07 27 views
0

Ich baue OSGI-Bundle für den Betrieb in Jboss Fuse 6.1 Container. Das Projekt enthält blueprint.xml (in src/main/resoureces/OSGI-INF/Blueprint). Es ist Inhalt:Autowinding Frühjahr Bohne in Camel Prozessor

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:camel="http://camel.apache.org/schema/blueprint" 
       xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf" 
       xmlns:cxf="http://cxf.apache.org/blueprint/core" 
       xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws" 

       xsi:schemaLocation=" 
      http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd 
      http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd 
      http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd 
      http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd 
    http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd" 
    > 
<bean id="MyProcessor" class="com.test.MyProcessor" /> 
      <camelContext trace="false" id="blueprintContext" xmlns="http://camel.apache.org/schema/blueprint"> 
      <route> 
       <from uri="activemq:queue:paymentsqueue?username=admin&amp;password=admin" id="NotificationRoute"> 
        <description/> 
       </from> 
       <log message="The message contains ${body}"/> 
       <process ref="MyProcessor"/> 
      </route> 
     </camelContext> 
    </blueprint> 

Mein Ziel ist die Verwendung von Spring-Bohnen in MyProcessor. Dies ist der Code für MyProcessor:

public class MyProcessor implements Processor { 

@Aurowired 
private Sender sender; 

@Override 
public void process(Exchange x) throws Exception { 
    log.info("test: " +sender.getSenderId()); 
} 

}

Aber es gibt mir Nullpointer. Was mache ich falsch?

Dies ist Inhalt meiner Feder-Konfigurationsdatei (i platziert es in src/main/resoureces/META-INF/Feder)

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 
    <context:annotation-config/> 
    <context:component-scan base-package="com.username"/> 
<bean id="sender" class="com.username.Sender" scope="prototype"> 
    <property name="senderId" value="sendername" /> 
    <property name="password" value="senderpassword" /> 
</bean> 

+0

ist es im Allgemeinen möglich Frühling Bohnen in Bauplan Bohnen zu verwenden \t gleichzeitig? Wie in meinem Beispiel, wo Kamel Route und Prozessor von Blueprint erstellt, aber Autowiring Bean von Frühling erstellt. – Maciavelli

Antwort

0

Ich glaube, Sie nicht den Prozessor MyProcessor erklärt haben, als eine Bohne im Frühjahr wie

<bean id="myProcessor" 
     class="com.test.MyProcessor" /> 

dann können Sie es als

<process ref="myProcessor"/> 
verwenden

Auch die

@Aurowired 
private Sender sender; 

soll @Autowired werden (Dies ist ein Tippfehler sein soll, aber wies sie darauf hin.)

+0

Ja, ich habe einen Fehler gemacht, wenn ich den Code oben kopiert habe. Diese Bohne wird im Blueprint deklariert. Ich habe es editiert. – Maciavelli