emgiraldo / mercadolibre-api

Example of listing an item on Mercadolibre
0 stars 0 forks source link

Not able tu deploy on Tomcat #1

Open cftalavera opened 4 years ago

cftalavera commented 4 years ago

Helllo,

I am trying to deploy the solution on TOMCAT 7.0 but I am getting this error:

020-06-01 10:14:04,674 INFO [org.springframework.web.context.ContextLoader] [initWebApplicationContext] - 2020-06-01 10:14:04,777 INFO [org.springframework.web.context.support.XmlWebApplicationContext] [prepareRefresh] - <Refreshing Root WebApplicationContext: startup date [Mon Jun 01 10:14:04 CDT 2020]; root of context hierarchy> 2020-06-01 10:14:04,821 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] [loadBeanDefinitions] - <Loading XML bean definitions from class path resource [spring/application-context.xml]> 2020-06-01 10:14:05,385 WARN [org.springframework.web.context.support.XmlWebApplicationContext] [refresh] - <Exception encountered during context initialization - cancelling refresh attempt> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationService' defined in file [C:\Workspace\Templates\Workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\mercadolibre\WEB-INF\classes\com\emgiraldo\mercadolibre\service\authentication\AuthenticationService.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.emgiraldo.mercadolibre.service.authentication.AuthenticationService]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1101) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:434) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.emgiraldo.mercadolibre.service.authentication.AuthenticationService]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1094) ... 22 more Caused by: java.lang.NullPointerException at com.emgiraldo.mercadolibre.service.authentication.AuthenticationService.(AuthenticationService.java:22) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ... 24 more 2020-06-01 10:14:05,389 ERROR [org.springframework.web.context.ContextLoader] [initWebApplicationContext] - org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationService' defined in file [C:\Workspace\Templates\Workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\mercadolibre\WEB-INF\classes\com\emgiraldo\mercadolibre\service\authentication\AuthenticationService.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.emgiraldo.mercadolibre.service.authentication.AuthenticationService]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1101) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:434) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.emgiraldo.mercadolibre.service.authentication.AuthenticationService]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1094) ... 22 more Caused by: java.lang.NullPointerException at com.emgiraldo.mercadolibre.service.authentication.AuthenticationService.(AuthenticationService.java:22) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ... 24 more jun 01, 2020 10:14:05 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 'authenticationService' defined in file [C:\Workspace\Templates\Workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\mercadolibre\WEB-INF\classes\com\emgiraldo\mercadolibre\service\authentication\AuthenticationService.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.emgiraldo.mercadolibre.service.authentication.AuthenticationService]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1101) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:434) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.emgiraldo.mercadolibre.service.authentication.AuthenticationService]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1094) ... 22 more Caused by: java.lang.NullPointerException at com.emgiraldo.mercadolibre.service.authentication.AuthenticationService.(AuthenticationService.java:22) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ... 24 more

jun 01, 2020 10:14:05 AM org.apache.catalina.core.StandardContext startInternal SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file jun 01, 2020 10:14:05 AM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/mercadolibre] startup failed due to previous errors jun 01, 2020 10:14:05 AM org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext jun 01, 2020 10:14:05 AM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8086"] jun 01, 2020 10:14:05 AM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] jun 01, 2020 10:14:05 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 7362 ms

Any clue? Thank you!

cftalavera commented 4 years ago

Doing debuggin it looks like the issue is the way to get properties file , it is not recogniezed by @Configuration @PropertySources(value = {@PropertySource("classpath:mercadolibre.properties")})

Please suggest how to fix it?. I am using java 1.8 and tomcat 7.0 . Regards

cftalavera commented 4 years ago

Hello, I am afraid this code has not been tested before . This project has several issues . The first one I already posted is related with the @Autowired process. The class AuthenticationService has @Autowired objects that cant not be done because they are called inside the constructors.

The autowiring process happends right after the constructor of a class has finished, so there is no way to use an @Autowired object inside the constructor of the class this is what the code has:

@Service("authenticationService") @Scope("singleton") public class AuthenticationService implements IAuthenticationService{

@Autowired
private PropertiesService propertiesService;
private Meli meli;

public AuthenticationService() {
    super();
    meli = new Meli(Long.valueOf(propertiesService.getMercadolibreCustomerId()),
            propertiesService.getMercadolibreAppKey());
}

This needs to be changed for something like this:

@Service("authenticationService") @Scope("singleton") public class AuthenticationService implements IAuthenticationService{

@Autowired
private PropertiesService propertiesService;
private Meli meli;

public AuthenticationService() {
    super();    
}

@PostConstruct 
public void loadMlApi() {
    meli = new Meli(Long.valueOf(propertiesService.getMercadolibreCustomerId()),
            propertiesService.getMercadolibreAppKey());
}

Now the class is able to use the @Autowired objects. More issues came up, so please do not consider this as a functional example, this can be use as reference in order to give and idea about using Mercado Libre API but is not a full working example.