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