2011-08-11 7 views
0

안녕하세요 저는 봄 3.0에서 안정적인 웹 서비스를 만들었지 만 제대로 작동하지만이 웹 서비스에 액세스 할 수있는 편안한 클라이언트를 만들 수 없습니다. 나는 구글에서 많은 것을 찾았지만 유용하지는 않았다. 여기 웹 서비스를 만들었습니다. 컨트롤러 :Spring 3에서 안정적인 클라이언트를 사용하여 안정적인 웹 서비스 액세스

package com.nmmc.ws.controller; 
import java.util.List; 
import javax.inject.Inject; 
import javax.inject.Named; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import com.nmmc.ws.model.Corporator; 
import com.nmmc.ws.serviceImpl.CorporatorServiceImpl; 

@Controller 
public class WSDemoController 
{ 
    @Inject 
    @Named("wsCorporator") 
    private CorporatorServiceImpl corporatorServiceImpl; 

    @RequestMapping(value = "/corporator.webService", method = RequestMethod.GET) 
    @ResponseBody 
    public List<Corporator> getAllCorporators() { 

     List list = corporatorServiceImpl.getAllCorporators(); 
     System.out.println("list" + list); 
     return list; 
    } 
} 

ServiceImpl에서는 :

package com.nmmc.ws.serviceImpl; 
import java.util.ArrayList; 
import java.util.List; 
import javax.inject.Inject; 
import javax.inject.Named; 
import com.nmmc.ws.daoImpl.CorporatorDAOImpl; 
import com.nmmc.ws.model.Corporator; 
@Named("wsCorporator") 
public class CorporatorServiceImpl 
{ 
    @Inject 
    @Named("wsCorporatorDAO") 
    private CorporatorDAOImpl corporatorDAOImpl;  
    public List<Corporator> getAllCorporators() {  
     List list = corporatorDAOImpl.getAllCorporators();  
     return list; 
    } 
} 

DAOImpl :

package com.nmmc.ws.daoImpl; 
import java.util.ArrayList; 
import java.util.List; 
import javax.inject.Named; 
import com.nmmc.ws.model.Corporator; 
@Named("wsCorporatorDAO") 
public class CorporatorDAOImpl 
{ 
    public List<Corporator> getAllCorporators() {   
     List list = new ArrayList(); 
     list.add("Some testing data..."); 
     return list; 
    } 
} 

은 applicationContext.xml : I는 다른 모듈에 restfulClient를 작성한

<?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:context="http://www.springframework.org/schema/context" 
      xmlns:util="http://www.springframework.org/schema/util" 
      xmlns:mvc="http://www.springframework.org/schema/mvc" 
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> 

      <import resource="works-servlet.xml" /> 

     <context:component-scan base-package="com.nmmc.ws"/> 
     <!--<context:component-scan base-package="com.nmmc.works.web" />  
     --><bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller"/> 
     <bean id="marshallingHttpMessageConverter"   class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> 
      <property name="marshaller" ref="xstreamMarshaller"/> 
      <property name="unmarshaller" ref="xstreamMarshaller"/> 
     </bean> 

     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
      <property name="messageConverters"> 
       <util:list id="beanList"> 
        <ref bean="marshallingHttpMessageConverter"/> 
       </util:list> 
      </property> 
     </bean> 
     <mvc:annotation-driven/>  
    </beans> 

ABO 주어진 application.xml을 :

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> 
     <property name="messageConverters"> 
      <list> 
       <!-- We only have one message converter for the RestTemplate, namely 
        the XStream Marshller --> 
       <bean 
        class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> 
        <constructor-arg> 
         <bean class="org.springframework.oxm.xstream.XStreamMarshaller"> 
          <!-- Explicitly define the aliases --> 
          <!-- <property name="aliases"> <props> <prop key="article">com.informit.articleservice.model.Article</prop> 
           <prop key="category">com.informit.articleservice.model.Category</prop> </props> 
           </property> --> 

          <!-- Tell XStream to find the alias names in the following classes --> 
          <property name="annotatedClasses"> 
           <list> 
            <value>com.nmmc.ws.model.Corporator</value> 
           </list> 
          </property> 
         </bean> 
        </constructor-arg> 
       </bean> 
      </list> 
     </property> 
    </bean> 


    <mvc:annotation-driven /> 

ClientController : 가능한 빨리 사전에 감사 나에게 급한 b'coz

package com.nmmc.ws.controller; 

import java.util.ArrayList; 
import java.util.List; 

import org.springframework.stereotype.Component; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.client.RestTemplate; 

import com.nmmc.ws.model.Corporator; 
@Controller 
//@RequestMapping("/clientController") 
@Component("articleClient") 
public class WSClientController 
{ 
    protected RestTemplate restTemplate; 
    private final static String articleServiceUrl = "http://myPortNo:8080/Works_Web/corporator.webService"; 
    @SuppressWarnings("unchecked") 
    @RequestMapping(value = "/corporator.etenderingWS", method = RequestMethod.GET) 
    public List<Corporator> getAllCorporators() 
    { 
     System.out.println("URI for request..." + articleServiceUrl); 
     List list = new ArrayList(); 
     try{ 
      System.out.println("In try block..."); 
      Corporator result = (Corporator) restTemplate.getForObject(articleServiceUrl, List.class); 
      list = (List) result; 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return list; 
    } 
} 

나에게주십시오 제안 단지 application.xml을 컨트롤러로했습니다. 응용 프로그램을 실행하면 오류가 발생합니다.

java.lang.NullPointerException 
    at com.nmmc.ws.controller.WSClientController.getAllCorporators(WSClientController.java:49) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:636) 

답변

0

클라이언트 컨트롤러의 RestTemplate 빈에 대한 종속성 삽입 주석을 잊어 버린 것 같습니다.

+0

감사합니다. 이제 RestTemplate 인스턴스에 @Inject @Named ("restTemplate")를 추가 한 RestTemplate 빈에 대한 종속성 주석을 삽입하는 것을 잊었다. – Balasaheb

-1

RestTemplate을 초기화하는 것을 잊었습니다. RestTemplate t = 새 RestTemplate();

멍청한 ...

관련 문제