我正在尝试使用 Tomcat 7 运行我的 Web 应用程序,但我遇到了这个异常:
GRAVE: Excepción arrancando filtro wicket.filter java.lang.IllegalStateException:未找到 [org.apache.wicket.protocol.http.WebApplication] 类型的 bean 在 org.apache.wicket.spring.SpringWebApplicationFactory.createApplication(SpringWebApplicationFactory.java:160) 在 org.apache.wicket.spring.SpringWebApplicationFactory.createApplication(SpringWebApplicationFactory.java:139) 在 org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:308) 在 org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:286) 在 org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) 在 org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:105) 在 org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4841) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5535) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(未知来源)
这是我的 web.xml:
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 版本="2.4">
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:*/META-INF/persistence-context.xml,
classpath:*/META-INF/service-context.xml,
classpath:*/META-INF/web-context.xml
</param-value>
</context-param>
<context-param>
<param-name>configuration</param-name>
<param-value>development</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>wicket.filter</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationFactoryClassName</param-name>
<param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>wicket.filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<session-config>
<session-timeout>7200</session-timeout>
</session-config>
唯一使用 WebApplication 的类是我的类 MounterURL:
公共(public)类 MounterURL {
private WebApplication webApplication;
public MounterURL(final WebApplication webApplication) {
this.webApplication = webApplication;
}
/**
* @param mountPath
* Mount path (not empty)
* @param pageClass
* Class of mounted page (not null)
* @param parameters
* The parameter names (not null)
*/
public void mount(final String mountPath,final Class<? extends WebPage> pageClass, final String... parameters) {
webApplication.mountPage(mountPath, pageClass);
}
MyApplication 使用这个类:
公共(public)类 MyApplication 扩展了 AuthenticatedWebApplication{
private MounterURL aMounterURL;
private GeneralService generalService;
@Override
protected Class<? extends AbstractAuthenticatedWebSession> getWebSessionClass() {
return WebSession.class;
}
@Override
public Class<? extends Page> getHomePage() {
return Home.class;
}
public String getContextPath() {
return this.getServletContext().getContextPath();
}
@Override
public void init() {
**aMounterURL = new MounterURL(this);**
this.getComponentInstantiationListeners().add(new SpringComponentInjector(this));
this.mountUrl("home", Home.class, "");
}
private void mountUrl(final String mountPath, final Class<? extends WebPage> pageClass, final String... parameters) {
aMounterURL.mount(mountPath, pageClass, parameters);
}
这个类是在 web.context.xml 中创建的
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd ">
<bean id="wicketApplication" class="home.MyApplication">
<property name="generalService" ref="services.general"></property>
</bean>
谢谢!
最佳答案
您似乎缺少 WebApplication 类型的 bean。您是否扩展了 Wickets WebApplication 类并将其添加为 bean。例如@Configuration?
关于java - 启动 Web 应用程序时出现 IllegalStateException - Spring + Wicket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34143184/