Last spring-bean in ein servlet
Gibt es viele Dokumentationen gibt, wie man diese Aufgabe, aber ich konnte immer noch nicht lösen, mein Problem. Ich bin neu in der Arbeit mit servlet, so dass ich wohl etwas verpasst.
Benutze ich red5 verwendet tomcat 6 erstellen Sie ein servlet, verwendet ein spring-bean, die von einer MysqlDb-Klasse für Datenbank-Manipulationen.
wenn ich Punkt red5 über port 5080, es wirkt wie eine regelmäßige tomcat-server und ich kann surfen jsp-und servlet-Seiten.
meine web.xml enthält die folgenden wichtigen Informationen:
<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>
meine 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>
meine FbAuth servlet:
Paket 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();
}
}
Bekomme ich die folgende Fehlermeldung:
java.lang.IllegalStateException: Context attribute is not of type WebApplicationContext
Ich denke, ich bin nicht Holen die spring-bean richtig.
irgendwelche Ideen?
danke!
update
dies ist meine neue init-Funktion:
public void init(ServletConfig config) throws ServletException {
super.init(config);
ServletContext servletContext = this.getServletContext();
this._context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
}
vielen Dank! 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutze ich folgende in die init () - Methode des Servlets. Die init () - Methode wird nur einmal aufgerufen, in einem Servlets-Lebenszyklus.
Habt Ihr auch die "contextConfigLocation" in Ihrem web.xml?
Können Sie mehrere Versionen von Frühling auf Ihrem class-path: überprüfen Sie, dass Sie nicht versehentlich laden von 2 verschiedenen Spring-jars.