2014-02-13 3 views
1

Я определил мой bean.xml как ниже для веб-службыОшибка создания боб с именем «myServiceCustomerOffer», определенный в ServletContext ресурс [/WEB-INF/beans.xml]

<jaxws:endpoint id="serviceCustomerOffer" implementor="#myServiceCustomerOffer" 
     implementorClass="com.abc.mime.ws.manage.customeroffer.ManageCustomerOfferImpl" 
     address="/getCustomerOffer" /> 

    <bean id="myServiceCustomerOffer" name="myServiceCustomerOfferName" class="com.abcd.mime.ws.manage.customeroffer.ManageCustomerOfferImpl" > 
     <constructor-arg index="0" ref="CustomerOfferFacade" /> 
    </bean> 

    <bean id="CustomerOfferFacade" name="CustomerOfferFacade" 
     class="com.abc.mime.ws.facade.customeroffer.CustomerOfferFacadeImpl"> 
     <constructor-arg index="0" ref="customerOfferDAO" /> 
     <constructor-arg index="1" ref="generalDomainSql" /> 
    </bean> 

    <bean id="customerOfferDAO" name="customerOfferDAOName" 
     class="com.abc.mime.ws.dao.bscs.sql.customeroffer.CustomerOfferDAOImpl"> 

    </bean> 
      <bean id="generalDomainSql" name="generalDomainSqlName" 
     class="com.abcd.mime.ws.dao.bscs.sql.generaldomain.GeneralDomainDAOImpl"> 
    </bean> 

Я получаю следующую ошибку во время развертывания на сервер tomcat 6. все классы определены в правильной структуре.

13/Feb/2014 05:08:10,423 [http-8090-1] ERROR org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceCustomerOffer': Cannot resolve reference to bean 'myServiceCustomerOffer' while setting constructor argument with index 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myServiceCustomerOffer' defined in ServletContext resource [/WEB-INF/beans.xml]: 1 constructor arguments specified but no matching constructor found in bean 'myServiceCustomerOffer' (hint: specify index and/or type arguments for simple parameters to avoid type ambiguities) 
Caused by: 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myServiceCustomerOffer' defined in ServletContext resource [/WEB-INF/beans.xml]: 1 constructor arguments specified but no matching constructor found in bean 'myServiceCustomerOffer' (hint: specify index and/or type arguments for simple parameters to avoid type ambiguities) 
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:145) 

Вот ManageCustomerOfferImpl.java, который используется в моем коде. Это также отображается в файле wsdl.

package com.abcd.mime.ws.manage.customeroffer; 
import java.rmi.RemoteException; 
import java.util.Date; 

import javax.jws.WebService; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import com.abcd.mime.ws.manage.customeroffer.ManageCustomerOffer; 

@WebService(endpointInterface = "com.abcd.mime.ws.manage.customeroffer.ManageCustomerOffer") 
public class ManageCustomerOfferImpl implements ManageCustomerOffer{ 



     private CustomerOfferFacade customerOfferFacade; 

     private Log logger = LogFactory 
       .getLog(com.abcd.mime.ws.manage.customeroffer.ManageCustomerOfferImpl.class); 

public ManageCustomerOfferImpl(CustomerOfferFacade _customerOffer) { this.customerOfferFacade = _customerOffer; } 

     @Override 
     public CustomerOfferResponse getCustomerOffer(CustomerOfferRequest customerOfferRequest) throws CustomerOfferFault { 

      logger.debug("ManageCustomerOfferImpl - getCustomerOffer: Received from Consumer MSISDN = ["+ customerOfferRequest.getMSISDN()+"]"); 
      // TODO Auto-generated method stub 

      ustomerOfferResponse customerOfferResponse = customerOfferFacade.getCustomerOffer(customerOfferRequest); 


      logger.debug("ManageCustomerOfferImpl - getCustomerOffer: Sending Response back to Consumer =>> "+ customerOfferResponse); 
      return customerOfferResponse; 
     } 

    } 

Он работал раньше, но, делая некоторые исправления он перестал работать

Error13/Feb/2014 09:22:06,625 [http-8090-2] ERROR org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceCustomerOffer': Invocation of init method failed; nested exception is java.lang.StackOverflowError 
Caused by: 
java.lang.StackOverflowError 
    at java.lang.ref.SoftReference.get(SoftReference.java:93) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2285) 
    at java.lang.Class.getDeclaredFields(Class.java:1743) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:298) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:227) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:179) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:172) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:301) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:227) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:179) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:172) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:301) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:227) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:179) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:172) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:301) 
    Feb 13, 2014 9:22:06 AM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: 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 'serviceCustomerOffer': Invocation of init method failed; nested exception is java.lang.StackOverflowError 
Caused by: java.lang.StackOverflowError 
    at java.lang.ref.SoftReference.get(SoftReference.java:93) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2285) 
    at java.lang.Class.getDeclaredFields(Class.java:1743) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:298) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:227) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:179) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:172) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:301) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:227) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:179) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:172) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:301) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:227) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:179) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:172) 
    at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:301) 
+0

Я имею в виду, что ошибка довольно очевидна. Можем ли мы увидеть ваш класс «ManageCustomerOfferImpl»? –

+0

@SotiriosDelimanolis Я добавил код для 'ManageCustomerOfferImpl.java' – RaG

+0

@SotiriosDelimanolis Я обновил код' ManageCustomerOfferImpl.java' – RaG

ответ

0

Ваш боб объявлен

<bean id="myServiceCustomerOffer" name="myServiceCustomerOfferName" class="com.abcd.mime.ws.manage.customeroffer.ManageCustomerOfferImpl" > 
    <constructor-arg index="0" ref="CustomerOfferFacade" /> 
</bean> 

Это означает, что он будет использовать конструктор, который ожидает аргумент независимо от типа CustomerOfferFacade. Однако ваш класс не имеет такого конструктора. Поэтому он терпит неудачу.

Я не знаю, что такое CustomerOfferFacadeImpl, поэтому я не знаю, что вы собираетесь с ним делать, но вам нужно добавить конструктор с параметром этого типа, если вы хотите, чтобы ваша декларация <bean> Работа.

+0

@RaG Хорошо. И что? Кроме того, не помещайте код в комментарии. –

+0

ОШИБКА: '13/Feb/2014 08: 36: 25,090 [http-8090-2] ERROR org.springframework.web.context.ContextLoader - Ошибка инициализации контекста org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем «serviceCustomerOffer»: вызов метода init не выполнен; вложенное исключение java.lang.StackOverflowError вызвано следующими причинами: java.lang.StackOverflowError \t в java.lang.System $ 2.getConstantPool (System.java:1130) \t на java.lang.reflect.Field.declaredAnnotations (поле .java: 1014) \t at java.lang.reflect.Field.getAnnotation (Field.java:1000) ' – RaG

Смежные вопросы