charge printemps fève dans une servlet
Il y a beaucoup de documentation sur la façon de réaliser cette tâche, mais je ne pouvais toujours pas à résoudre mon problème. Je suis nouveau à travailler avec servlet donc j'ai sans doute raté quelque chose.
- Je utiliser red5 qui utilise tomcat 6 pour créer une servlet qui utilise un ressort de haricot qui est de MysqlDb classe pour les manipulations de base de données.
quand j'point de red5 en utilisant le port 5080 il agit régulièrement comme serveur tomcat et je peux parcourir jsp et servlet pages.
mon web.xml contient les renseignements suivants:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>fbauth</servlet-name>
<servlet-class>com.xpogames.FbAuth</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fbauth</servlet-name>
<url-pattern>/fbauth</url-pattern>
</servlet-mapping>
mon 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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/red5-web.properties" />
</bean>
<bean id="idDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${db.driver}</value></property>
<property name="url"><value>${db.url}</value></property>
<property name="username"><value>${db.username}</value></property>
<property name="password"><value>${db.password}</value></property>
<property name="poolPreparedStatements"><value>true</value></property>
<property name="maxActive"><value>10</value></property>
<property name="maxIdle"><value>10</value></property>
</bean>
<bean id="MysqlDb" class="com.xpogames.MysqlDb">
<property name="idDataSource" ref="idDataSource"/>
</bean>
</beans>
mon FbAuth servlet:
package com.xpogames;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
public class FbAuth extends HttpServlet {
private static final long serialVersionUID = 1L;
public FbAuth() {
super();
//TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
MysqlDb mysqlDb = (MysqlDb)webApplicationContext.getBean("MysqlDb");
out.println(mysqlDb.testme());
out.println("Hello, world!");
out.close();
}
}
J'obtiens l'erreur suivante:
java.lang.IllegalStateException: Context attribute is not of type WebApplicationContext
Je pense que je ne suis pas aller chercher le printemps bean correctement.
des idées?
merci!
mise à jour
c'est ma nouvelle fonction init:
public void init(ServletConfig config) throws ServletException {
super.init(config);
ServletContext servletContext = this.getServletContext();
this._context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
}
merci beaucoup! 🙂
OriginalL'auteur ufk | 2011-06-20
Vous devez vous connecter pour publier un commentaire.
J'utilise la suite dans la méthode init() de la servlet. La méthode init() est appelée une seule fois dans un cycle de vie des Servlets.
Aussi, avez-vous le "contextConfigLocation" dans votre web.xml?
OriginalL'auteur Rajendra
Vous pouvez avoir plusieurs versions de Printemps sur votre chemin de classe: vérifiez que vous n'avez pas accidentellement de chargement 2 différentes Printemps pots.
OriginalL'auteur Femi
OriginalL'auteur Nethaji Narasimalu