2011-08-18 2 views
0

에서 웹 서비스 문제 HI ALL
내가 내 서비스 개체
을 초기화하기되지 않는 한 문제에 직면하고 스프링 웹 서비스를 노출하는 것을 시도하고있다 ------------- --end 포인트 클래스 --------------

봄 - 인스턴스화

import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint; 

import com.mt.service.CalculatorService; 

public abstract class AbstractCalculatorEndpoint extends AbstractMarshallingPayloadEndpoint { 
    protected CalculatorService calculatorService; 

    public void setCalcService(CalculatorService calculatorService) { 
     this.calculatorService = calculatorService; 
    } 

    protected abstract Object invokeInternal(Object request) throws Exception; 

} 


----------- AddNumberEndpoint 클래스 ----- -------

package com.mt.endpoint; 

import com.mt.calculator.schema.AddNumberRequest; 

public class AddNumberEndpoint extends AbstractCalculatorEndpoint { 
    @Override 
    protected Object invokeInternal(Object request) throws Exception { 
     AddNumberRequest addNumberRequest = (AddNumberRequest) request; 
     if(calculatorService==null) 
      System.out.println("------------------- I AM NULL ------- :( "); 
     return calculatorService.addTwoNumber(addNumberRequest.getFirstNumber(), 
       addNumberRequest.getSecondNumber()); 
    } 
} 



내 서블릿 구성

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oxm="http://www.springframework.org/schema/oxm" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/oxm 
    http://www.springframework.org/schema/oxm/spring-oxm-1.5.xsd"> 

    <bean id="calculatorService" class="com.mt.service.CalculatorServiceImpl" 
     init-method="initialize" /> 

    <bean id="Calculator" 
     class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> 
     <property name="schema" ref="schema" /> 
     <property name="portTypeName" value="Calculator" /> 
     <property name="locationUri" value="/services" /> 
     <property name="targetNamespace" value="http://www.mt.com/calculator/schema" /> 
    </bean> 

    <bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
     <property name="xsd" value="/WEB-INF/calculator.xsd" /> 
    </bean> 

    <bean id="validatingInterceptor" 
     class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> 
     <property name="xsdSchema" ref="schema" /> 
     <property name="validateRequest" value="true" /> 
     <property name="validateResponse" value="true" /> 
    </bean> 

    <bean id="loggingInterceptor" 
     class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor" /> 

    <oxm:jaxb2-marshaller id="marshaller" 
     contextPath="com.mt.calculator.schema" /> 
    <oxm:jaxb2-marshaller id="unmarshaller" 
     contextPath="com.mt.calculator.schema" /> 

    <bean id="addNumberEndpoint" class=" com.mt.endpoint.AddNumberEndpoint" 
     autowire="byName" /> 


    <bean name="endpointMapping" 
     class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> 
     <property name="interceptors"> 
      <list> 
       <ref local="loggingInterceptor" /> 
       <ref local="validatingInterceptor" /> 
      </list> 
     </property> 
     <property name="mappings"> 
      <props> 
       <prop key="{http://www.mt.com/calculator/schema}AddNumberRequest"> 
        addNumberEndpoint</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="exceptionResolver" 
     class="org.springframework.ws.soap.server.endpoint.SoapFaultMappingExceptionResolver"> 
     <property name="defaultFault" value="SERVER" /> 
     <property name="exceptionMappings"> 
      <props> 
       <prop key="org.springframework.oxm.ValidationFailureException">CLIENT,Invalid request</prop> 
       <prop key="com.mt.service.CalculatorException">SERVER</prop> 
      </props> 
     </property> 
    </bean> 
</beans> 


Plese는 다른 정보가 필요하면 알려주세요


고마워
고마워
이전 예외 내가 때문에 (
--------

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <SOAP-ENV:Body> 
     <SOAP-ENV:Fault> 
     <faultcode>SOAP-ENV:Server</faultcode> 
     <faultstring xml:lang="en">JAXB marshalling exception; nested exception is javax.xml.bind.MarshalException 
- with linked exception: 
[com.sun.istack.SAXException2: unable to marshal type "java.lang.Integer" as an element because it is missing an @XmlRootElement annotation]</faultstring> 
     </SOAP-ENV:Fault> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 
+0

에서 setCalculatorService(...)

변경 setCalcService(...) 당신은 질문을하지 않았습니다. 당신이 기대하는 행동은 무엇이며, 그 대신에 어떤 일이 일어나고 있습니까? –

답변

1

봄이에 바인딩 calcService를 찾습니다 있도록 이름으로 addNumberEndpoint을 autowiring에 있습니다 무엇입니까 지금 사라 setter 이름)이지만 CalculatorService의 ID는 calculatorService입니다. AbstractCalculatorEndpoint

+0

고마워요. 솔루션을 얻었습니다 ... 두 번째 시간 내 서비스 구현의 반환 된 반환 유형에 ** AddNumberResponse ** 대신 Int – Arvind

+0

안녕하세요.이 해결 방법이 있지만 안녕하세요. **감사** – Arvind