How difficult would it be for CXF to return a user-friendly error message if that is the case (i.e., attempting to bind to an interface)?
Glen Am Dienstag, den 17.07.2007, 14:24 -0700 schrieb Dan Diephouse (JIRA): > [ > https://issues.apache.org/jira/browse/CXF-794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513365 > ] > > Dan Diephouse commented on CXF-794: > ----------------------------------- > > Now I'm just guess, but is User an interface? I would try using the Aegis > databinding if thats the case as JAXB can't handle interfaces. > > > Hibernate + Spring = Crashing (for me) > > -------------------------------------- > > > > Key: CXF-794 > > URL: https://issues.apache.org/jira/browse/CXF-794 > > Project: CXF > > Issue Type: Bug > > Affects Versions: 2.0 > > Environment: Apache Tomcat 5.5.23 > > Spring 2.0.5 > > Windows XP > > Reporter: Cyrus Amiri > > > > Evaluating CXF as an alternative to the overengineered Axis2 project... > > Constructed the CXF servlet as described in the spring section of the Users > > Guide > > Created a test service: > > IServiceTest.java > > package com.novaleaf.kauri.serviceinterfaces; > > import javax.jws.WebService; > > @WebService > > public interface IServiceTest > > { > > public int addTwoIntegers(int x, int y); > > public String concatenateTwoStrings(String a, String b); > > public String getVersion(); > > } > > and, implemented it: > > ServiceTest.java > > package com.novaleaf.kauri.serviceinterfaces; > > import javax.jws.WebService; > > @WebService > > public class ServiceTest implements IServiceTest > > { > > > > public int addTwoIntegers(int x, int y){ > > return x+y; > > } > > public String concatenateTwoStrings(String a, String b){ > > return a+b; > > } > > public String getVersion(){ > > return "1434933993"; > > } > > } > > It works fine (tested with various clients). Very cool, and quite easy! > > Then... I tried to test the services with Spring + Hibernate expecting the > > same success > > Added > > addUser(String firstName, String lastName, String password, String email) > > to the interface > > and > > private IUserDao userDao; > > > > public void setUserDao(UserDao userDao) > > { > > this.userDao = userDao; > > } > > public void addUser(String firstName, String lastName, String password, > > String email) > > { > > User userToAdd = new User(); > > userToAdd.setFirstName(firstName); > > userToAdd.setLastName(lastName); > > userToAdd.setPassword(password); > > userToAdd.setEmail(email); > > userDao.AddUser(userToAdd); > > } > > To the service implementation > > > > As a note: > > The above example is injecting the dao. However, I tried without the > > setUserDao/spring bean and called and created a dao from within the addUser > > function with the same result: > > the app doesn't deploy, tomcat doesn't start. > > Log messages are below. This might be a configuration or jar issue, but I > > thought i'd drop this bug in here anyways. > > Most of the services (about 80%) we will be using are little more than > > wrappers for persistence calls - so it's kind of important to us to figure > > out how to solve this. > > Messages > > log4j:WARN No appenders could be found for logger > > (org.apache.commons.digester.Digester.sax). > > log4j:WARN Please initialize the log4j system properly. > > INFO > > [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/kauri]] - > > Initializing Spring root WebApplicationContext > > WARN [org.hibernate.cfg.Environment] - Property > > [hibernate.cglib.use_reflection_optimizer] has been renamed to > > [hibernate.bytecode.use_reflection_optimizer]; update your properties > > appropriately > > ERROR [org.springframework.web.context.ContextLoader] - Context > > initialization failed > > org.springframework.beans.factory.BeanCreationException: Error creating > > bean with name 'serviceTest': Invocation of init method failed; nested > > exception is org.apache.cxf.service.factory.ServiceConstructionException > > Caused by: > > org.apache.cxf.service.factory.ServiceConstructionException > > at > > org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:269) > > at > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:220) > > at > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:248) > > at > > org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:136) > > at > > org.apache.cxf.frontend.AbstractEndpointFactory.createEndpoint(AbstractEndpointFactory.java:83) > > at > > org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:89) > > at > > org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:142) > > at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:277) > > at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:223) > > at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:175) > > at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:329) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1240) > > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1205) > > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171) > > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425) > > at > > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) > > at > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156) > > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) > > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) > > at > > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287) > > at > > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) > > at > > org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244) > > at > > org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187) > > at > > org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) > > at > > org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764) > > at > > org.apache.catalina.core.StandardContext.start(StandardContext.java:4216) > > at > > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) > > at > > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) > > at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) > > at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825) > > at > > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714) > > at > > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490) > > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) > > at > > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) > > at > > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) > > at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) > > at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) > > at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) > > at > > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) > > at > > org.apache.catalina.core.StandardService.start(StandardService.java:448) > > at > > org.apache.catalina.core.StandardServer.start(StandardServer.java:700) > > at org.apache.catalina.startup.Catalina.start(Catalina.java:552) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) > > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) > > Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 > > counts of IllegalAnnotationExceptions > > org.hibernate.Interceptor is an interface, and JAXB can't handle interfaces. > > this problem is related to the following location: > > at org.hibernate.Interceptor > > at public org.hibernate.Interceptor > > org.springframework.orm.hibernate3.HibernateAccessor.getEntityInterceptor() > > throws > > java.lang.IllegalStateException,org.springframework.beans.BeansException > > at org.springframework.orm.hibernate3.HibernateAccessor > > at org.springframework.orm.hibernate3.HibernateTemplate > > at public final > > org.springframework.orm.hibernate3.HibernateTemplate > > org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate() > > at > > org.springframework.orm.hibernate3.support.HibernateDaoSupport > > at com.novaleaf.kauri.dao.UserDao > > org.springframework.jdbc.support.SQLExceptionTranslator is an interface, > > and JAXB can't handle interfaces. > > this problem is related to the following location: > > at org.springframework.jdbc.support.SQLExceptionTranslator > > at public > > org.springframework.jdbc.support.SQLExceptionTranslator > > org.springframework.orm.hibernate3.HibernateAccessor.getJdbcExceptionTranslator() > > at org.springframework.orm.hibernate3.HibernateAccessor > > at org.springframework.orm.hibernate3.HibernateTemplate > > at public final > > org.springframework.orm.hibernate3.HibernateTemplate > > org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate() > > at > > org.springframework.orm.hibernate3.support.HibernateDaoSupport > > at com.novaleaf.kauri.dao.UserDao > > org.hibernate.SessionFactory is an interface, and JAXB can't handle > > interfaces. > > this problem is related to the following location: > > at org.hibernate.SessionFactory > > at public org.hibernate.SessionFactory > > org.springframework.orm.hibernate3.HibernateAccessor.getSessionFactory() > > at org.springframework.orm.hibernate3.HibernateAccessor > > at org.springframework.orm.hibernate3.HibernateTemplate > > at public final > > org.springframework.orm.hibernate3.HibernateTemplate > > org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate() > > at > > org.springframework.orm.hibernate3.support.HibernateDaoSupport > > at com.novaleaf.kauri.dao.UserDao > > at > > com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66) > > at > > com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:389) > > at > > com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:236) > > at > > com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76) > > at > > com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at javax.xml.bind.ContextFinder.newInstance(Unknown Source) > > at javax.xml.bind.ContextFinder.find(Unknown Source) > > at javax.xml.bind.JAXBContext.newInstance(Unknown Source) > > at > > org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContext(JAXBDataBinding.java:397) > > at > > org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:267) > > ... 51 more >
