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! 🙂

InformationsquelleAutor ufk | 2011-06-20
Schreibe einen Kommentar