2016-01-01 2 views
1

Я просто хочу использовать весенний боб в пределах handleMessage() метод, который вызывается в handler-chain.xml.Как использовать весеннюю фасоль в SOAPHandler

Это мой обработчик-chain.xml:

<jaxws:bindings> 
    <handler-chains xmlns="http://java.sun.com/xml/ns/javaee"> 
     <!-- ====================== --> 
     <!-- service based handlers --> 
     <!-- ====================== --> 
     <handler-chain> 
      <handler> 
       <handler-name>CustomerHandler</handler-name> 
       <handler-class>com.test.ws.handler.CustomerHandler</handler-class> 
      </handler> 
     </handler-chain> 
    </handler-chains> 
</jaxws:bindings> 

А также это мой CustomerHandler.java класс:

public class CustomerHandler implements SOAPHandler<SOAPMessageContext> { 

@Autowired 
public ServiceInvokeUtil serviceInvokeUtil; 

public Set<QName> getHeaders() { 

    return null; 
} 

public void close(MessageContext context) { 

} 

public boolean handleFault(SOAPMessageContext context) { 
    logSoapMessage(context); 
    return false; 
} 

public boolean handleMessage(SOAPMessageContext context) { 


    Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); 
    SOAPMessage soapMsg = context.getMessage(); 
    // if this is a request, true for outbound messages, false for inbound 
    if (isRequest) { 

     try { 
      SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope(); 
      SOAPHeader soapHeader = soapEnv.getHeader(); 

      // if no header, add one 
      if (soapHeader == null) { 
       soapHeader = soapEnv.addHeader(); 
      } 
      Boolean oa = serviceInvokeUtil.createRecord(SoapUtil.getRecordEntity()); 

      SOAPElement userContextHeader = ConsumerHeaderHelper.createUserContextHeader(context); 
      soapHeader.addChildElement(userContextHeader); 
      } 
      soapMsg.saveChanges(); 




     } catch (SOAPException e) { 
      System.err.println(e); 
     } 

    } else { 

     try { 
      SoapUtil.setSoapResponseHeader(soapMsg.getSOAPHeader()); 
     } catch (SOAPException e) { 
      e.printStackTrace(); 
     } 

    } 
    logSoapMessage(context); 
    return true; 
} 

Это мой пружинная конфигурация xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring 
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd"> 

<context:property-placeholder /> 

<bean id="serviceInvokeUtil" class="com.test.ws.util.ServiceInvokeUtil"> 
</bean> 

Когда я звоню в веб-службу, весенняя фасоль serviceInvokeUtil имеет значение null. Как использовать serviceInvokeUtil класс как фасоль в handleMessage метод?

ответ

1

Я расширил SpringBeanAutowiringSupport до класса CustomerHandler, чем он был решен. Например: public class CustomerHandler расширяет SpringBeanAutowiringSupport реализует SOAPHandler {.....

0

Весна будет обрабатывать @ Обобщенная аннотация, только если она будет контролировать создание экземпляра. Другими словами, ваш CustomerHandler должен быть bean, а также ServiceInvokeUtil, чтобы принудительно использовать весной autowire.

+0

Во-первых, благодарю вас за регресс. Я уже пробовал. Я кладу класс customerHandler в весеннюю конфигурацию xml в качестве весеннего боба. Пример: Но результат такой же. У вас есть разные идеи? – kozmo

Смежные вопросы