2015-12-07 36 views
0

我想和Tomcat 7上運行Web應用我的,但我得到這個異常:IllegalStateException異常而啓動的Web應用程序 - 春+檢票

墳墓Excepciónarrancando filtro wicket.filter java.lang.IllegalStateException:未找到[org.apache.wicket.protocol.http.WebApplication]類型的bean at org.apache.wicket.spring.SpringWebApplicationFactory.createApplication(SpringWebApplicationFactory.java:160) at org.apache.wicket.spring.SpringWebApplicationFactory .createApplication(SpringWebApplicationFactory.java:139) at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:308) at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:286) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) at 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 ) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5535) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core .ContainerBase $ StartChild.call(ContainerBase.java:1574) at org.apache.catalina.core.Contai nerBase $ StartChild.call(ContainerBase.java:1564) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent。的ThreadPoolExecutor $ Worker.run(來源不明) 在java.lang.Thread.run(來源不明)

這是我的web.xml:

http://java.sun.com/xml /ns/j2ee/web-app_2_4.xsd「 version =」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:

公共類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:

公共類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/securityhttp://www.springframework.org/schema/security/spring-security-3.0.xsd「>

<bean id="wicketApplication" class="home.MyApplication"> 
    <property name="generalService" ref="services.general"></property> 
</bean> 
創建

謝謝!

回答

2

看起來你缺少一個WebApplication類型的bean。您是否擴展了Wickets WebApplication類並將其添加爲bean。例如@Configuration?

+0

我唯一擁有的類是公共類MyApplication extends AuthenticatedWebApplication – evilkorona

+0

如果您想使用'applicationFactoryClassName = SpringWebApplicationFactory',則必須將它作爲一個bean添加到Spring上下文中。 –

+0

它已經在web-context.xml和web.xml調用中添加了 它 – evilkorona

相關問題