1. 程式人生 > >spring mvc rest webservice 在jboss 下 406 錯誤的解決方法

spring mvc rest webservice 在jboss 下 406 錯誤的解決方法

開發環境

   IDE: Intellij

   jdk:1.6

   spring 4.1.2

   jackson 1.9.7

   jetty

servlet.xml

Version:0.9StartHTML:-1EndHTML:-1StartFragment:0000000111EndFragment:0000003256

    <mvc:annotation-driven/>
    <context:component-scan base-package="com.lenovo.lmc.wh">
<!--<context:exclude-filter type="assignable" expression="com.hoo.client.RESTClient"/>-->
</context:component-scan> <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> </list>
</property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />--> <!--<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />-->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

即沒有註釋掉的內容

問題:在local 環境 訪問如下的restful 的service 時沒問題,但是部署到jboss 下則出現406 錯誤

           如果把返回型別修改成string則沒有問題,也就是說bean 轉換成jason 時出了錯

Version:0.9StartHTML:-1EndHTML:-1StartFragment:0000000111EndFragment:0000001134

@ResponseBody
@RequestMapping( value = "{buildEntityNumber}/queryFeatureCodes.do" , method = RequestMethod.GET)
public BeBean queryFeatureCodes(@PathVariable String buildEntityNumber ){
    return featureCodesService.queryFeatureCodes(buildEntityNumber);
}

解決方法:經過檢視,發現spring 4 已經不支援jackson 1 了,而是已經切換到了jackson2

因此需要升級jackson 的包到2的版本

Version:0.9StartHTML:-1EndHTML:-1StartFragment:0000000111EndFragment:0000000724

compile 'com.fasterxml.jackson.core:jackson-core:2.4.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.3'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.3'