|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
|
|
|
Re: 帮忙看个问题nor any of its super class is known to this contextHello Willem:
谢谢你的回复!我明白你说的意思,但是如何用extension来做我有些不明白? 对我来讲,CXF的JSon对象序列化机制实在是有些死板。我很想替换掉他的序列化机制,改用我自己的Interceptor来手工序列化对象。这样我可以不用写固定的annotation或者用复杂的data binding tools来做,请问你再这方面有什么建议么? 我看到cxf-user forum里的Sergey 谈到WADL的support,我相信如果基于CXF-RS-*的开发,在以后也会转到用WADL来定义和构建。如果我想以后迁移到标准的开发方式来,现在是否依然需要保持CXF的原有序列化组件呢? 我同样发了个详细的帖子在cxf-user forum里面,包括详细的代码和实现。Link: http://www.nabble.com/Exception-about-%22***-nor-any-of-its-super-class-is-known-to-this-context%22-td25004234.html Thanks! Sam
|
|
|
Re: 帮忙看个问题nor any of its super class is known to this contextOH, 我试着看了下他的序列化实现。这个JAXRSOutInterceptor里面做的事情很多,我想简单用对象序列化的方法需要更多的代码实现,所以我放弃了。
原来的代码我试着用继承的方式来搞,虽然这样会产生很多的代码类在case by case情况下。但也想不到有更好的方法了:(
|
|
|
Re: 帮忙看个问题nor any of its super class is known to this contextJAXB 的功能还是很强大的, 只要你定义好数据模型 ,case by case的工作很少的。 On 8月18日, 上午10时31分, "Sam.Wang" <BinB.W...@...> wrote: > OH, > 我试着看了下他的序列化实现。这个JAXRSOutInterceptor里面做的事情很多,我想简单用对象序列化的方法需要更多的代码实现,所以我放弃了。 > > 原来的代码我试着用继承的方式来搞,虽然这样会产生很多的代码类在case by case情况下。但也想不到有更好的方法了:( > > > > Sam.Wang wrote: > > > Hello Willem: > > > 谢谢你的回复!我明白你说的意思,但是如何用extension来做我有些不明白? > > > 对我来讲,CXF的JSon对象序列化机制实在是有些死板。我很想替换掉他的序列化机制,改用我自己的Interceptor来手工序列化对象。这样我可以不用 写固定的annotation或者用复杂的data > > binding tools来做,请问你再这方面有什么建议么? > > 我看到cxf-user forum里的Sergey > > 谈到WADL的support,我相信如果基于CXF-RS-*的开发,在以后也会转到用WADL来定义和构建。如果我想以后迁移到标准的开发方式来,现在是否 依然需要保持CXF的原有序列化组件呢? > > 我同样发了个详细的帖子在cxf-user forum里面,包括详细的代码和实现。Link: > >http://www.nabble.com/Exception-about-%22***-nor-any-of-its-super-cla... > > > Thanks! > > Sam > > > willem.jiang wrote: > > >> JAXB 对待泛型还是有些问题的, 建议你使用extension 而不是泛型来定义你的更 > >> 新接口。 > > >> 姜宁 (Willem) > >> ------------------ > >> Apache CXF, Apache Camel committer > >>http://willemjiang.blogspot.com/ > >>http://www.fusesource.org > > >> yysam Wang wrote: > >>> Hello willem: > > >>> I have this issue too. > >>> 下面是我一点简单的代码,我实在想不出来为什么Apple这个类会出问题。谢谢 > > >>> @XmlRootElement(name = "response") > >>> public class CRUDResponse<T extends Object> { > > >>> private int total; > >>> private int limit; > >>> private int start; > >>> private boolean success = true; > >>> private T entity; > >>> private List<T> entityList; > > >>> get... > >>> set... > >>> } > > >>> error info: > > >>> 2009-8-17 17:56:08 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider > >>> handleJAXBException > >>> 警告: javax.xml.bind.MarshalException > >>> - with linked exception: > >>> [javax.xml.bind.JAXBException: class > >>> com.ge.med.ris.admintool.apple.Apple nor any of its super class is > >>> known to this context.] > > >>> 调用代码: > >>> public Response updateApple(Apple apple) throws Exception { > >>> apple = new AppleServiceImpl().updateApple(apple); > >>> return Response.ok(new CRUDResponse<Apple>(apple)).build(); > >>> } > > >>> Thanks! > >>> Sam > > >>> On 2008年2月18日, 上午8时51分, willem <willem.ji...@...> wrote: > >>>> 建议你把SEI (Service Endpoint Interface)好好改一下 > > >>>> public java.util.List<java.lang.Object> getUserLists(); > > >>>> public Map getUserMap(); > > >>>> 这两个方法的返回参数都让JAXB 无从侍从。 > >>>> 要知道SEI 是帮你做Java Object 到 XML 以及 XML 到 Java Object 转换的基础。 > > >>>> 如果是List的话,应该指定List中存放的数据类型。 > >>>> 如果是Map而且你是使用CXF的缺省data binding JAXB, 那你还需要写Adapter来完成。 > >>>> 如果你使用Agies binding 你可以直接使用Map [1]。 > > >>>> [1]http://cwiki.apache.org/CXF20DOC/aegis-databinding.html > > >>>> 姜宁 (Willem) > >>>> ------------------http://willem.bokeland.com/ > > >>>> On 2月15日, 下午2时45分, 9527 <missyo...@...> wrote: > > >>>>> org.apache.cxf.interceptor.Fault: Marshalling Error: class > >>>>> org.mumu.user.model.User nor any of its super class is known to this > >>>>> context. > >>>>> at > >>>>> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java: > >>>>> 207) > >>>>> at > >>>>> org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java: > >>>>> 63) > >>>>> at > >>>>> org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(Abs > >>>>> tractOutDatabindingInterceptor.java: > >>>>> 84) > >>>>> at > >>>>> org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutIntercep > >>>>> tor.java: > >>>>> 68) > >>>>> at > >>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai > >>>>> n.java: > >>>>> 208) > >>>>> at > >>>>> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingC > >>>>> hainInterceptor.java: > >>>>> 74) > >>>>> at > >>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai > >>>>> n.java: > >>>>> 208) > >>>>> at > >>>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO > >>>>> bserver.java: > >>>>> 77) > >>>>> at > >>>>> org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestin > >>>>> ation.java: > >>>>> 79) > >>>>> at > >>>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(Servle > >>>>> tController.java: > >>>>> 264) > >>>>> at > >>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController > >>>>> .java: > >>>>> 123) > >>>>> at > >>>>> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServl > >>>>> et.java: > >>>>> 170) > >>>>> at > >>>>> org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServle > >>>>> t.java: > >>>>> 152) > >>>>> at > >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > >>>>> at > >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > >>>>> at > >>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio > >>>>> nFilterChain.java: > >>>>> 252) > >>>>> at > >>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC > >>>>> hain.java: > >>>>> 173) > >>>>> at > >>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j > >>>>> ava: > >>>>> 213) > >>>>> at > >>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j > >>>>> ava: > >>>>> 178) > >>>>> at > >>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: > >>>>> 126) > >>>>> at > >>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: > >>>>> 105) > >>>>> at > >>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav > >>>>> a: > >>>>> 107) > >>>>> at > >>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > >>>>> 148) > >>>>> at > >>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: > >>>>> 869) > >>>>> at org.apache.coyote.http11.Http11BaseProtocol > >>>>> $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java: > >>>>> 664) > >>>>> at > >>>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.ja > >>>>> va: > >>>>> 527) > >>>>> at > >>>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW > >>>>> orkerThread.java: > >>>>> 80) > >>>>> at org.apache.tomcat.util.threads.ThreadPool > >>>>> $ControlRunnable.run(ThreadPool.java:684) > >>>>> at java.lang.Thread.run(Thread.java:619) > >>>>> Caused by: javax.xml.bind.MarshalException > >>>>> - with linked exception: > >>>>> [javax.xml.bind.JAXBException: class org.mumu.user.model.User nor any > >>>>> of its super class is known to this context.] > >>>>> at > >>>>> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java: > >>>>> 295) > >>>>> at > >>>>> com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java: > >>>>> 221) > >>>>> at > >>>>> javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImp > >>>>> l.java: > >>>>> 70) > >>>>> at > >>>>> org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java: > >>>>> 360) > >>>>> at > >>>>> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java: > >>>>> 182) > >>>>> User 类是model > >>>>> service 是 > >>>>> @WebService > >>>>> public interface IUserManager { > >>>>> public java.util.List<java.lang.Object> getUserLists(); > >>>>> public Map getUserMap(); > >>>>> } > >>>>> 实现是 > >>>>> @javax.jws.WebService(serviceName = > >>>>> "IUserManagerService",endpointInterface = > >>>>> "org.mumu.user.service.IUserManager") > >>>>> public class IUserManagerImpl implements IUserManager { > >>>>> private static final Logger LOG = > >>>>> Logger.getLogger(IUserManagerImpl.class > >>>>> .getName()); > >>>>> private IBaseDao baseDao; > >>>>> /* > >>>>> * (non-Javadoc) > >>>>> * > >>>>> * @see org.mumu.user.service.IUserManager#getUserLists(* > >>>>> */ > >>>>> public java.util.List<java.lang.Object> getUserLists() { > >>>>> LOG.info("Executing operation getUserLists"); > >>>>> try { > >>>>> String sql = "select * from t_user"; > >>>>> System.out.println(sql); > >>>>> List list = baseDao.getLists(sql, new > >>>>> UserRowMapper()); > >>>>> System.out.println(list.size()); > >>>>> return list; > >>>>> } catch (Exception ex) { > >>>>> ex.printStackTrace(); > >>>>> throw new RuntimeException(ex); > >>>>> } > >>>>> } > >>>>> public Map getUserMap() { > >>>>> String sql = "select * from t_user where user_id=1"; > >>>>> return baseDao.queryForMap(sql); > >>>>> } > >>>>> public class UserRowMapper implements > >>>>> ParameterizedRowMapper<User> { > > ... > > 阅读更多 >> 您收到此信息是由于您订阅了 Google 论坛“cxf-zh”论坛。 要在此论坛发帖,请发电子邮件到 cxf-zh@... 要退订此论坛,请发邮件至 cxf-zh-unsubscribe@... 更多选项,请通过 http://groups.google.com/group/cxf-zh?hl=zh-CN 访问该论坛 ---- Apache CXF 首页 http://cwiki.apache.org/confluence/display/CXF/Index -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: 帮忙看个问题nor any of its super class is known to this contextHi Willem:
真的很感谢你的回复!我目前有些这方面的research对于CXF-RS的应用,你能提供些实际经验给我么?谢谢! 项目的一些介绍:主要是based在CXF-RS服务实现上的。前台view layer使用静态富客户端(Extjs)来实现的,通过Ajax进行RS的访问,中间层采用JSON作为数据载体,整体用RESTful风格来实现和进行调用。业务层面上很简单,主要是实现一个配置管理的系统。没有过多的业务流程和操作,大部分的cases是进行CRUD的操作。 Thanks! Sam
|
|
|
Re: 帮忙看个问题nor any of its super class is known to this contextHello Willem:
首先谢谢你的帮助,对于JAXB序列化确实有些困难和小问题。不过Sergey提供了一个小方案,来完美的支持泛型的序列化。我相信也有很多人如果用泛型的话会遇到类似的问题,请不妨参考这个帖子的讨论和解决方案。 http://www.nabble.com/Exception-about-%22***-nor-any-of-its-super-class-is-known-to-this-context%22-td25004234.html Thanks Sam.
|
| Free embeddable forum powered by Nabble | Forum Help |