請耐心等待,我來自.net,並且是Java世界的新手。當JAX庫添加到項目中時,Hibernate會死亡
我有一個使用休眠作爲DAL的Spring MVC 3網站。我正在嘗試爲該項目添加一個Web服務包。
這是問題所在。只要我將核心和jaxb JAX-RS庫添加到我的解決方案(使我能夠將REST-JAX方法添加到我的服務項目類中的庫),hibernate停止在整個項目(包括我的網站)上工作。任何查詢數據庫的hibernate調用(findbyblah())都會拋出NullPointerException異常。當我刪除這兩個核心庫時,清理和重建,我的網站再次開始工作。
我只需要能夠從我的網站實施一些服務方法。有人能指引我朝着正確的方向嗎?謝謝。
更新:這裏是堆棧跟蹤:
java.lang.NullPointerException
com.myeclipse.hibernate.ServicetypeDAO.findAll(ServicetypeDAO.java:100)
com.indixium.models.RegistrationModel.<init>(RegistrationModel.java:27)
com.indixium.controllers.RegisterController.get(RegisterController.java:29)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
再次更新:
所以我發現,看好兩篇文章:
http://www.hildeberto.com/2008/05/hibernate-and-jersey-conflict-on.html
描述了休眠和球衣都使用asm.jar,但是d不同版本,這就是衝突行爲存在的原因。它說,爲了解決這個問題:
爲了解決這個衝突使用CGLIB的nodep.jar代替cglib.jar並保持ASM 3.x版本與新澤西州。 cglib-nodep.jar包含cglib.jar所要求的一些ASM類,更改包名以避免任何類衝突。
不幸的是,我不知道如何爲每個庫「使用」不同的jar。任何對此的幫助表示讚賞。
我發現第二個解決方案說修改pom.xml文件(我也不知道該怎麼做)。我已經搜索了我的項目和我的整個硬盤驅動器,找到一個名爲pom.xml的文件,但沒有運氣。我如何更改pom.xml?這裏是鏈接到第二個解決方案:
http://blog.idm.fr/2009/04/jersey-hibernate-conflict.html
如果有人能幫助我實現其中任意一個,這將是大加讚賞。謝謝。
請對這些JAX庫進行更具體的說明。你在談論JAX-RS嗎?你正在使用哪個實現?什麼是NPE的堆棧跟蹤? – FelixM
是的,JAX-RS(Core和JAXB v.1.0.3.1)。這裏是堆棧跟蹤..(太長的評論,我會更新我的問題) – kmehta