Spring2.5 Component Scan Not Working in JB 7AS
deepusrp Apr 11, 2012 11:42 AMHello Folks,
I'm using JBoss 7 AS(jboss-as-7.1.0.Final) as my server.
I have 2 questions...
1. I'm using Eclipse Helios SR2. I'm not able to get the proper pluging to have JBOSS AS as my server in eclipse.
I got several sites in net for the plugin, but when i tried to install it says conflicting, and it closes.
Can i add Jboss 7 AS to my eclipse ?
2. I'm using spring 2.5, JSF and hibernate application.
The problem is i have used annotation for component and repository but it is not getting initialized. Basically spring component scanner is not working.
Please find the code snippets:
Web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param>
applicationContext.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" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="main.controllerbeans" /> <context:annotation-config /> <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list><value>/WEB-INF/configuration.properties</value></list> </property> </bean> <!-- IMPORTING HIBERNATE SETTINGS --> <import resource="/db-config.xml"/>
Component scan is not working... it seems
db-config.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" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driver.className}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- <property name="packagesToScan" value="main.dbentities" /> -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
<property name="packagesToScan" value="org.adit.spring.hibernate.entity" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<context:annotation-config />
<tx:annotation-driven />
</beans>
faces-config.xml
<?xml version="1.0"?> <faces-config 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-facesconfig_2_0.xsd" version="2.0"> <application> <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> </application>
NotificationBean.java
import java.io.Serializable;
import javax.faces.bean.RequestScoped;
import main.dao.NotificationDAO;
import main.dbentities.Notification;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("notificationBean")
@RequestScoped
public class NotificationBean implements Serializable {
private static final long serialVersionUID = -3637354326738964505L;
@Autowired
Notification notification;
@Autowired
public NotificationDAO notificationDao;
public NotificationBean() {
notification = new Notification();
//notificationDao = new NotificationDaoImpl();
}
public void persist(){
System.out.println("Persist Method");
notification.setUserId(111);
notification.setPriorityId(1);
notificationDao.save(notification);
}
In my xhtml page i have a input text box:
<h:inputText id="englishMessageTitle" value="#{notificationBean.notification.notificationTitleEng}" />
And there is submit button:
<h:commandButton class="btn_empty" id="submit" value="#{msg['CreateNotification.Submit']}" action="#{notificationBean.persist}" />
I'm getting the follwoing exception:
javax.el.PropertyNotFoundException: /xhtml/postmessage.xhtml @36,111 value="#{notificationBean.notification.notificationTitleEng}": Target Unreachable, identifier 'notificationBean' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
at javax.faces.component.UIInput.validate(UIInput.java:960)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
Its unable to resolve the bean notificationBean
Following are the Jars that i have in my web-inf/lib:
c3p0-0.9.1.2.jar
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
dom4j-1.6.1.jar
hibernate-3.2.1.ga.jar
hibernate-annotations-3.4.0.GA.jar
hibernate-commons-annotations-3.1.0.GA.jar
hibernate-core-3.3.2.GA.jar
jboss-el-2.0.1.GA.jar
jsf-api.jar
jsf-impl.jar
jsp-2.1-6.0.2.jar
jstl-api-1.2.jar
jstl-impl-1.2.jar
mysql-connector-java-3.0.17-ga-bin.jar
org.springframework.context-2.5.6.SEC01.jar
org.springframework.core-2.5.6.SEC01.jar
org.springframework.transaction-2.5.6.A.jar
persistence-api-1.0.jar
spring-2.5.6.SEC01.jar
spring-beans-2.5.6.SEC01.jar
Please let me know what is the problem, and let me know if u need any other information.