2017-11-20 3 views
0

このコードでは、restTemplate.exchange()を使用してサービスを呼び出すと、以下。私はSpringフレームワーク4.0.1を使用しています。例外はjava.lang.NoSuchMethodError:org/codehaus/jackson/map/ObjectMapper.getTypeFactory()Lorg/codehaus/jackson/map/type/TypeFactory

Glassfishを使用してこれを実行するとうまくいきますが、Webspare 8.5.5にサービスを展開するとエラーが発生します。

私のコード

package com.org.controller; 

import com.ibm.json.java.JSONObject; 
import java.util.ArrayList; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 

import com.org.modal.Student; 
import java.io.IOException; 
import javax.ws.rs.core.MediaType; 
import org.springframework.http.HttpEntity; 
import org.springframework.http.HttpHeaders; 
import org.springframework.http.HttpMethod; 
import org.springframework.http.ResponseEntity; 

import org.springframework.web.client.RestTemplate; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 

@EnableWebMvc 
@Controller 
public class zSpringWebService { 

    @ResponseBody 
    @RequestMapping(value="/student",method = RequestMethod.GET , produces = MediaType.APPLICATION_JSON) 
    public ArrayList<Student> getStudentList() 
    { 
     Student student1 = new Student(); 
     student1.setName("Satish"); 

     Student student2 = new Student(); 
     student2.setName("Praveen"); 

     ArrayList<Student> studentList = new ArrayList<Student>(); 
     studentList.add(student1); 
     studentList.add(student2); 

     return studentList; 
    } 

    @ResponseBody 
    @RequestMapping(value="/student/{name}",method = RequestMethod.GET) 
    public JSONObject getStudentListWithParams(@PathVariable("name") String name) throws IOException 
    { 
       JSONObject json = new JSONObject(); 
     Student student1 = new Student(); 
     student1.setName(name); 
      String readJsonFromUrl = new zSpringWebService().readJsonFromUrl(); 

     Student student2 = new Student(); 
     student2.setName("Praveen"); 

     ArrayList<Student> studentList = new ArrayList<Student>(); 
     studentList.add(student1); 
     studentList.add(student2); 

       json.put("Name1", name); 
       json.put("Name", "Test"); 
       json.put("readJsonFromUrl", readJsonFromUrl); 
//  return studentList; 
       return json; 
    } 


     public String readJsonFromUrl() throws IOException { 
//  UserDetailsBean userDetailsBean=null; 
     RestTemplate restTemplate = new RestTemplate(); 
       HttpHeaders headers = new HttpHeaders(); 
       headers.set("Content/Type", "application/json"); 
       HttpEntity<String> entity = new HttpEntity<String>("parameters", headers); 
       ResponseEntity<String> response = restTemplate.exchange("http://localhost:8080/student/", HttpMethod.GET, entity, String.class); 
       System.out.println("exchange " + response); 
       if (!(response.getStatusCode().toString().equals("200"))) { 
        throw new RuntimeException("Failed : HTTP error code : " 
          + response.getStatusCode()); 
       }  
       return response.toString(); 
      } 


      public static void main(String[] args) throws IOException { 
     new zSpringWebService().readJsonFromUrl(); 
    } 
}  

エラーは次のとおりです。

com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause spring: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org/codehaus/jackson/map/ObjectMapper.getTypeFactory()Lorg/codehaus/jackson/map/type/TypeFactory; 
      at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1284) 
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965) 
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) 
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) 
      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1237) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114) 
      at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3928) 
      at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304) 
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1007) 
      at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817) 
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287) 
      at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
      at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
      at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) 
      at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
      at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
      at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
      at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
      at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
      at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881) 
     Caused by: java.lang.NoSuchMethodError: org/codehaus/jackson/map/ObjectMapper.getTypeFactory()Lorg/codehaus/jackson/map/type/TypeFactory; 
      at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.getJavaType(MappingJacksonHttpMessageConverter.java:236) 
      at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.canRead(MappingJacksonHttpMessageConverter.java:151) 
      at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.canRead(MappingJacksonHttpMessageConverter.java:146) 
      at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:653) 
      at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:719) 
      at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:539) 
      at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:502) 
      at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:444) 
      at com.org.controller.zSpringWebService.readJsonFromUrl(zSpringWebService.java:92) 
      at com.org.controller.zSpringWebService.getStudentListWithParams(zSpringWebService.java:51) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
      at java.lang.reflect.Method.invoke(Method.java:611) 
      at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) 
      at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
      at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) 
      at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) 
      ... 30 more 
+0

ジャクソンのJarファイルを確認してください。古いものを使用している可能性があります –

+0

ジャーソンジャーを使わずにグラスフィッシュで問題なく動作しています。私は他のサービスを呼び出していますrestTemplate.then私はjacksonに関して何もインポートしませんでした。 reply –

答えて

0

あなたの問題は、私は春バージョン4.1.6.RELEASEとジャクソンバージョン2.4.4作業を使用して春バージョンとジャクソンのバージョンの非互換性、 です良い。

+0

IBM webspare8.5.5では動作しません。 –