Hi everyone,
I'm having trouble that always failed to deploy the Project:
This is Deployment Descriptor (web.xml):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Eagle</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Beans.xml</param-value>
</context-param>
<servlet>
<servlet-name>Processor</servlet-name>
<servlet-class>EITServletPackage.EITProcessorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Processor</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<display-name>EITIssueProcessFilter</display-name>
<filter-name>EITIssueProcessFilter</filter-name>
<filter-class>EITServletPackage.EITIssueProcessFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EITIssueProcessFilter</filter-name>
<url-pattern>/Issue/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
</web-app>
Spring Application context file (Beans.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/eagleit"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
<bean id="IssueJDBCTemplate" class="EITDAOPackage.EITIssueJDBCTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
The JDBCTemplate class (EITIssueJDBCTemplate.java)
package EITDAOPackage;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import EITBeanPackage.EITIssueBean;
public class EITIssueJDBCTemplate implements EITIssueDAO
{
DataSource AppDataSource ;
JdbcTemplate JDBCTemplate ;
@Override
public void SetDataSource(DataSource DS)
{
this.AppDataSource = DS ;
this.JDBCTemplate = new JdbcTemplate(DS) ;
}
@Override
public void Insert(String Title, String Description, int Category)
{
}
@Override
public EITIssueBean GetIssue(int ID)
{
String SQLQuery = "SELECT * FROM issue where ID = ?" ;
EITIssueBean ReturnIssue =
JDBCTemplate.queryForObject(SQLQuery, new Object[]{ID}, new EITIssueMapper()) ;
return ReturnIssue;
}
@Override
public void Update(int ID, String Title, String Description, int Category)
{
}
}
This is how I used the JDBCTemplate class (in a Filter class):
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest IssueRequest = (HttpServletRequest)request ;
HttpSession IssueDataSession = IssueRequest.getSession() ;
RequestDispatcher IssueViewDispatcher =
request.getRequestDispatcher("../IssueView.jsp") ;
IssueDataSession.setAttribute("ID", 1) ;
EITIssueJDBCTemplate IssueJDBCTemplate =
(EITIssueJDBCTemplate) TheContext.getBean("IssueJDBCTemplate") ;
IssueViewDispatcher.forward(request, response) ;
//chain.doFilter(request, response); COMMENTED OUT
}
And finally the Error message I got:
13-Apr-2014 01:21:35.859 INFO [http-nio-8084-exec-7] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath
13-Apr-2014 01:21:39.532 SEVERE [http-nio-8084-exec-7] org.apache.catalina.core.StandardContext.filterStart Exception starting filter EITIssueProcessFilter
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IssueJDBCTemplate' defined in class path resource [Beans.xml]: Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'dataSource' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1456)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1197)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
[....]
I created this following tutorial from http://www.tutorialspoint.com/spring/spring_jdbc_example.htm
I think I did everything right and compliant with Spring configuration, but I don't know why NetBeans cannot deploy with the Beans.xml :(
Hope you guys can help me, just tell me if you need more information.
Much appreciated!