Thanks, adding xfire-java5.jar worked!
On 12/5/06, Dan Diephouse <[EMAIL PROTECTED]> wrote:
Hmmm.. Are you perchance using Maven? If so have you included the
xfire-java5 module on the classpath?
Also Criterion will need setters and a default constructor for XFire to
work.
- Dan
On 12/5/06, Eliot Clingman <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I have specifically used Java 5 generics so that XFire would
> automatically bind to typed collections, as has been specificed in the user
> guide and the mailing list. But I have done that and Xfire is still blowing
> up (see error stack below). My versions are xfire 1.2.3 and Spring 2.0
>
> This is My service interface:
> public Collection<Service> findServicesByCriteria(Collection<Criterion>
> criteria) throws InvalidSearchCriteriaException ;
>
> In turn, Service object have properties some of which are typed
> collections, and similarly with Criterion object. Anyway, Xfire doesn't seem
> to notice that the collections are strongly typed using java 5 generics.
> Here is the Criterion definition:
>
> import java.util.Arrays;
> import java.util.Collection;
>
>
> public class Criterion {
>
> Collection<String> relations = Arrays.asList(new String[] { "eq",
> "gt", "ge", "ls", "le" });
> String property;
> String relation;
> String value;
>
> /**
> * E.g. new Criterion("name","eq","Billy Bob");
> *
> * @param property
> * @param relation
> * @param value
> */
> public Criterion(String property, String relation, String value) {
> super();
>
> if (!relations.contains(relation)) {
> throw new RuntimeException("Invalid relation");
> }
> this.relation = relation;
> this.property = property;
> this.value = value;
> }
>
> public String getProperty() {
> return property;
> }
>
> public String getRelation() {
> return relation;
> }
>
> public Collection<String> getRelations() {
> return relations;
> }
>
> public String getValue() {
> return value;
> }
>
>
>
> }
>
> ____
> Error stack:
> This is the exact error message when I try to deploy xfire running in
> spring:
>
> Exception sending context initialized event to listener instance of
> class org.springframework.web.context.ContextLoaderListener
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name '
> org.springframework.web.servlet.handler.SimpleUrlHandlerMapping' defined
> in ServletContext resource [/WEB-INF/crowd-servlet.xml]: Cannot resolve
> reference to bean 'serviceManagerSOAP' while setting bean property 'urlMap'
> with key [/serviceManager]; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'serviceManagerSOAP' defined in ServletContext resource
> [/WEB-INF/crowd-servlet.xml]: Invocation of init method failed; nested
> exception is org.codehaus.xfire.XFireRuntimeException: Cannot create
> mapping for java.util.Collection, unspecified component type for
> parameter 0 of method findServicesByCriteria in interface
> com.qualcomm.crowd.service.ServiceManager
> Caused by:
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'serviceManagerSOAP' defined in ServletContext resource
> [/WEB-INF/crowd-servlet.xml]: Invocation of init method failed; nested
> exception is org.codehaus.xfire.XFireRuntimeException: Cannot create
> mapping for java.util.Collection, unspecified component type for
> parameter 0 of method findServicesByCriteria in interface
> com.qualcomm.crowd.service.ServiceManager
> Caused by:
> org.codehaus.xfire.XFireRuntimeException: Cannot create mapping for
> java.util.Collection, unspecified component type for parameter 0 of
> method findServicesByCriteria in interface
> com.qualcomm.crowd.service.ServiceManager
> at
> org.codehaus.xfire.aegis.type.DefaultTypeCreator.createCollectionType(
> DefaultTypeCreator.java:43)
> at org.codehaus.xfire.aegis.type.XMLTypeCreator.createCollectionType
> (XMLTypeCreator.java:141)
> at
> org.codehaus.xfire.aegis.type.AbstractTypeCreator.createTypeForClass (
> AbstractTypeCreator.java:91)
> at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createType(
> AbstractTypeCreator.java:334)
> at org.codehaus.xfire.aegis.AegisBindingProvider.getSuggestedName(
> AegisBindingProvider.java :232)
> at
>
org.codehaus.xfire.service.binding.DefaultServiceConfiguration.getInParameterName
> (DefaultServiceConfiguration.java:160)
> at
> org.codehaus.xfire.service.binding.ObjectServiceFactory.getInParameterName(
> ObjectServiceFactory.java:1044)
> at
> org.codehaus.xfire.service.binding.ObjectServiceFactory.addOperation(
> ObjectServiceFactory.java:798)
> at
> org.codehaus.xfire.service.binding.ObjectServiceFactory.initializeOperations(
> ObjectServiceFactory.java:742)
> at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(
> ObjectServiceFactory.java:426)
> at org.codehaus.xfire.spring.ServiceBean.afterPropertiesSet(
> ServiceBean.java:176)
> at
> org.codehaus.xfire.spring.remoting.XFireExporter.afterPropertiesSet(
> XFireExporter.java:30)
> at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods
> (AbstractAutowireCapableBeanFactory.java :1062)
> at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean
> (AbstractAutowireCapableBeanFactory.java:1029)
> at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(
> AbstractAutowireCapableBeanFactory.java:420)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject
> (AbstractBeanFactory.java:245)
> at
>
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(
> DefaultSingletonBeanRegistry.java:141)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:242)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean (
> AbstractBeanFactory.java:156)
> at
>
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference
> (BeanDefinitionValueResolver.java:246)
> at
>
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(
> BeanDefinitionValueResolver.java:128)
> at
>
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap
> (BeanDefinitionValueResolver.java:299)
> at
>
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(
> BeanDefinitionValueResolver.java:140)
> at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues
> (AbstractAutowireCapableBeanFactory.java:955)
> at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(
> AbstractAutowireCapableBeanFactory.java:729)
> at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
> (AbstractAutowireCapableBeanFactory.java:416)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> AbstractBeanFactory.java:245)
> at
>
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
> (DefaultSingletonBeanRegistry.java:141)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean (
> AbstractBeanFactory.java:242)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:156)
> at
>
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(
> DefaultListableBeanFactory.java:290)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(
> AbstractApplicationContext.java:348)
> at
>
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(
> AbstractRefreshableWebApplicationContext.java:156)
> at
> org.springframework.web.context.ContextLoader.createWebApplicationContext
> (ContextLoader.java:246)
> at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(
> ContextLoader.java:184)
> at
> org.springframework.web.context.ContextLoaderListener.contextInitialized
> (ContextLoaderListener.java:49)
> at org.apache.catalina.core.StandardContext.listenerStart(
> StandardContext.java :3763)
> at org.apache.catalina.core.StandardContext.start(
> StandardContext.java:4211)
> at org.apache.catalina.core.ContainerBase.addChildInternal(
> ContainerBase.java:759)
> at org.apache.catalina.core.ContainerBase.addChild (
> ContainerBase.java:739)
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java
> :524)
> at org.apache.catalina.startup.HostConfig.deployDescriptor(
> HostConfig.java:608)
> at org.apache.catalina.startup.HostConfig.deployDescriptors (
> HostConfig.java:535)
> at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java
> :470)
> at org.apache.catalina.startup.HostConfig.start(HostConfig.java
> :1122)
> at org.apache.catalina.startup.HostConfig.lifecycleEvent (
> HostConfig.java:310)
> at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(
> LifecycleSupport.java:119)
> at org.apache.catalina.core.ContainerBase.start(ContainerBase.java
> :1021)
> at org.apache.catalina.core.StandardHost.start (StandardHost.java
> :718)
> at org.apache.catalina.core.ContainerBase.start(ContainerBase.java
> :1013)
> at org.apache.catalina.core.StandardEngine.start(StandardEngine.java
> :442)
> at org.apache.catalina.core.StandardService.start (
> StandardService.java:450)
> at org.apache.catalina.core.StandardServer.start(StandardServer.java
> :709)
> at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
> 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:585)
> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> "To Serve Man: It's a cookbook!" – The Twilight Zone
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog
--
"To Serve Man: It's a cookbook!" – The Twilight Zone