[
https://issues.apache.org/jira/browse/CXF-794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513430
]
Cyrus Amiri commented on CXF-794:
---------------------------------
In the code I provided:
IUser is the interface
User is the object
there's a code file for each
The exposed service contain an interface, but only to immediately be filled by
an User data object.
I guess what you're saying is: If CXF exposes a class as a service - it breaks
if a called function on that class uses any interface if you use JAXB binding?
That sounds absolutely lame if true. My code, like much code, uses a lot of
interfaces.
All of it breaks when called from a CXF exposed function? Uhh... ok.
Sounds like a bug, dubious development flaw purported as a limitation, or at
least a doc bug.
People using CXF are going to run into this very quick and not really
understand the response of:
Oh, you're using Interfaces? Wellll... Then...
That's the kind of useless complex overengineering we've had to put up with in
other frameworks and why a lot of us are evaluating CXF.
Anyways, I'll take a look at the Aegis stuff, I guess - but I'd much rather
have had this just work or at least been prepared for it to happen.
Not trying to be a jerk, just say that this stuff should just work out of the
box. It does for non-interface stuff. And I, like most users, don't really
care about the technical limitations. If it can be done with aegis, maybe that
should be configure to be the default. Anyways, I regress into the wilderness.
> 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
> Assignee: Dan Diephouse
>
> 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
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.