【发布时间】:2012-07-17 15:22:01
【问题描述】:
情况如下。
当我使用 EclipseLink MOXy 和 Spring 3 MVC 生成 JSON 输出时,当我尝试使用以下语句设置 json 媒体类型时,它会引发以下异常。
marshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, "application/json");
javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json
at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:520)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
我也在使用 JAXBviews 为应用程序中的其他服务生成 xml 输出。这是 application-context.xml 中的 beans 声明。
<bean id="jaxbMarshaller" class="com.abc.restws.marshallers.ClasspathScanningJaxb2Marshaller">
<property name="basePackages" ref="jaxbBasePackages" />
</bean>
<bean id="jaxbMarshallingView" class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="jaxbMarshaller"/>
</bean>
<bean id="jaxbJsonMarshallingView" class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="contentType" value="application/json"/>
<property name="marshaller" ref="jaxbJsonMarshaller"/>
</bean>
这个错误的原因是什么?我该如何解决这个错误? XML 输出生成良好,但对于 JSON,它会引发此异常。您可以在异常详细信息中看到它也使用正确的 JAXBMarshaller 类来设置 json 媒体类型。请指教。
“org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:520)”
【问题讨论】:
标签: java eclipselink weblogic-10.x moxy