Spring Java Config vs Jboss 7
Ich versuche, führen Sie eine einfache Anwendung mit spring java-basierte Konfiguration für jboss, aber kein Erfolg.
Diese Anwendung funktioniert gut sowohl auf jetty und tomcat.
Das jboss-log sieht gut aus, da zeigt er mir einige der erfolgreichen Zuordnungen usw, aber ich bekam 404 versucht auf die url zugreifen.
Hier mein code:
Initialisierer
@Order(1)
public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {WebAppConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setInitParameter("dispatchOptionsRequest", "true");
}
}
RootConfig
@Configuration
@ComponentScan(value = "com.test.config", excludeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, value = RootConfig.class))
public class RootConfig {
}
WebAppConfig
@Configuration
@ComponentScan("com.test")
@EnableWebMvc
@EnableSpringDataWebSupport
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/pages/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
Und jetzt das jboss-log...
17:08:53,645 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/test]] (MSC service thread 1-8) Spring WebApplicationInitializers detected on classpath: [br.com.cleartech.config.Initializer@2f7e4dd2]
17:08:53,767 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/test]] (MSC service thread 1-8) Initializing Spring root WebApplicationContext
17:08:53,768 INFO [org.springframework.web.context.ContextLoader] (MSC service thread 1-8) Root WebApplicationContext: initialization started
17:08:53,770 INFO [org.springframework.web.context.support.AnnotationConfigWebApplicationContext] (MSC service thread 1-8) Refreshing Root WebApplicationContext: startup date [Wed Dec 18 17:08:53 BRST 2013]; root of context hierarchy
17:08:53,843 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
17:08:53,846 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-330 'javax.inject.Named' annotation found and supported for component scanning
17:08:53,847 INFO [org.springframework.web.context.support.AnnotationConfigWebApplicationContext] (MSC service thread 1-8) Registering annotated classes: [class br.com.cleartech.config.RootConfig]
17:08:53,915 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
17:08:53,916 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-330 'javax.inject.Named' annotation found and supported for component scanning
17:08:53,977 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
17:08:53,978 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-330 'javax.inject.Named' annotation found and supported for component scanning
17:08:54,130 INFO [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] (MSC service thread 1-8) JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
17:08:54,153 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-8) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@52477602: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,rootConfig,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,log4j,webAppConfig,homeController,consoleAppender,fileAppender,registerSpringLogger,org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration,mvcValidator,simpleControllerHandlerAdapter,beanNameHandlerMapping,httpRequestHandlerAdapter,mvcContentNegotiationManager,requestMappingHandlerMapping,resourceHandlerMapping,requestMappingHandlerAdapter,mvcConversionService,viewControllerHandlerMapping,defaultServletHandlerMapping,handlerExceptionResolver,org.springframework.data.web.config.SpringDataWebConfiguration,pageableResolver,sortResolver,setupViewResolver]; root of factory hierarchy
17:08:54,269 INFO [org.hibernate.validator.util.Version] (MSC service thread 1-8) Hibernate Validator 4.2.0.Final
17:08:54,388 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (MSC service thread 1-8) Mapped "{[/teste],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String br.com.cleartech.controller.HomeController.teste()
17:08:54,404 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-8) Mapped URL path [/resources/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
17:08:54,631 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-8) Root mapping to handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
17:08:54,634 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-8) Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler]
17:08:54,668 INFO [org.springframework.web.context.ContextLoader] (MSC service thread 1-8) Root WebApplicationContext: initialization completed in 899 ms
17:08:54,675 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/test]] (MSC service thread 1-8) Initializing Spring FrameworkServlet 'dispatcher'
17:08:54,676 INFO [org.springframework.web.servlet.DispatcherServlet] (MSC service thread 1-8) FrameworkServlet 'dispatcher': initialization started
17:08:54,679 INFO [org.springframework.web.context.support.AnnotationConfigWebApplicationContext] (MSC service thread 1-8) Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Wed Dec 18 17:08:54 BRST 2013]; parent: Root WebApplicationContext
17:08:54,681 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
17:08:54,682 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-330 'javax.inject.Named' annotation found and supported for component scanning
17:08:54,683 INFO [org.springframework.web.context.support.AnnotationConfigWebApplicationContext] (MSC service thread 1-8) Registering annotated classes: [class br.com.cleartech.config.WebAppConfig]
17:08:54,685 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
17:08:54,686 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-330 'javax.inject.Named' annotation found and supported for component scanning
17:08:54,698 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning
17:08:54,699 INFO [org.springframework.context.annotation.ClassPathBeanDefinitionScanner] (MSC service thread 1-8) JSR-330 'javax.inject.Named' annotation found and supported for component scanning
17:08:54,759 INFO [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] (MSC service thread 1-8) JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
17:08:54,786 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-8) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12f882f3: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,webAppConfig,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,log4j,rootConfig,homeController,consoleAppender,fileAppender,registerSpringLogger,org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration,mvcValidator,simpleControllerHandlerAdapter,beanNameHandlerMapping,httpRequestHandlerAdapter,mvcContentNegotiationManager,requestMappingHandlerMapping,resourceHandlerMapping,requestMappingHandlerAdapter,mvcConversionService,viewControllerHandlerMapping,defaultServletHandlerMapping,handlerExceptionResolver,org.springframework.data.web.config.SpringDataWebConfiguration,pageableResolver,sortResolver,setupViewResolver]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@52477602
17:08:54,885 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (MSC service thread 1-8) Mapped "{[/teste],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String br.com.cleartech.controller.HomeController.teste()
17:08:54,891 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-8) Mapped URL path [/resources/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
17:08:54,927 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-8) Root mapping to handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
17:08:54,931 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-8) Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler]
17:08:54,962 INFO [org.springframework.web.servlet.DispatcherServlet] (MSC service thread 1-8) FrameworkServlet 'dispatcher': initialization completed in 285 ms
17:08:54,977 INFO [org.jboss.web] (MSC service thread 1-8) JBAS018210: Registering web context: /test
17:08:54,985 INFO [org.jboss.as] (MSC service thread 1-5) JBAS015951: Admin console listening on http://127.0.0.1:9990
17:08:54,986 INFO [org.jboss.as] (MSC service thread 1-5) JBAS015874: JBoss AS 7.1.1.Final "Brontes" started in 8333ms - Started 377 of 455 services (77 services are passive or on-demand)
17:08:55,175 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "test.war"
Wie Sie sehen können, scheint es ok zu sein, da habe ich einige:
Spring WebApplicationInitializers detected on classpath
Initializing Spring root WebApplicationContext
Root WebApplicationContext: initialization started
Mapped URL path [/resources/**]
Mapped URL path [/**]
Registering web context: /test
JBAS018559: Deployed "test.war"
Aber beim Zugriff auf localhost:8080/test oder auch eine einfache rest erklärt in einen controller hab ich 404.
Vielen Dank im Voraus
Thiago
Was passiert, wenn Sie versuchen, Zugriff auf die admin-Konsole unter http://127.0.0.1:9990 ?
Sie haben alle Handler für
funktioniert einwandfrei, erscheint die jboss admin console...
Ich habe diesen: public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); }
Ich war zu Ahnen, andere Dienstleistungen (jetty/tomcat) läuft auf 8080, aber die app gibt es nicht, jedenfalls scheint es aus den Protokollen deutlich, dass die Jboss hören auf 8080. Wenn kein web-server läuft, 8080, erhalten Sie diesen browser-Bildschirm keine Reaktion.
Sie haben alle Handler für
/
?funktioniert einwandfrei, erscheint die jboss admin console...
Ich habe diesen: public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); }
Ich war zu Ahnen, andere Dienstleistungen (jetty/tomcat) läuft auf 8080, aber die app gibt es nicht, jedenfalls scheint es aus den Protokollen deutlich, dass die Jboss hören auf 8080. Wenn kein web-server läuft, 8080, erhalten Sie diesen browser-Bildschirm keine Reaktion.
InformationsquelleAutor Thiago Pereira | 2013-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem mit einer Spring-MVC-Projekt bereitgestellt JBoss 7.1 nicht web.xml.
Nach Frühling javadocs für WebApplicationInitializer, ältere Versionen von Tomcat (<=7.0.14) konnte nicht zugeordnet werden "/" programmatisch. Ältere Versionen von JBoss AS 7 haben das gleiche defekt.
Dies ist der Ursprung meines Problems. Ich war die Registrierung der servlet mit "/", aber JBoss EAP-6.4 nicht unterstützt, ist diese Zuordnung programmgesteuert. Es funktioniert nur über web.xml. Ich wollte noch verwenden programmatischen config, also änderte ich das mapping auf "/*" statt "/", und es fixiert mein Problem.
Hinweis: Diese Konfiguration ist nicht kompatibel mit JSP-views. "/*" Vorrang vor den servlet-container JSP Servlet. Wenn Sie verlassen sich immer noch auf JSP-views, würde ich empfehlen web.xml konfigurieren Sie das DispatcherServlet statt, es zu tun, programmatisch; die web.xml Konfiguration funktioniert mit "/" richtig.
Ja, sorry, wenn das unklar war.
Aufruf neuer
AnnotationConfigWebApplicationContext()
imSpringBootServletInitializer
Unterklasse bewirkt, dass alle@Component
annotierten Objekte instanziiert werden zweimal (bitte siehe meine Antwort, wie dies zu vermeiden).Es sollte angemerkt werden, dass Ihr Problem gilt nur für Spring Boot. Für eine nicht-boot-Spring MVC-app, diese Lösung sollte in Ordnung sein.
InformationsquelleAutor Michael R
War ich mit @SpringBootApplication
Als ich Las in diesem thread, die ich brauchte, um:
In das url fand ich die code-Lösung: Hinzufügen Servlet-Mapping Versand servlet
Yeah, spring boot ist toll! Ich war starten und testen meiner Anwendung lokal innerhalb einer eingebetteten tomcat, aber wenn ich eingesetzt, um JBoss ich hatte das gleiche problem. So nach dem Lesen deinen thread und fand eine Lösung entschieden, nach einer anderen Antwort helfen Sie anderen Jungs, wenn Sie hatte die gleichen Probleme in der Zukunft 😉
Ja das ist Super, eigentlich ist dieser thread hilft Jungs, die sind und die nicht mit spring boot... Obwohl seine sehr empfehlen, gehen für ein boot: -)
InformationsquelleAutor Ignacio Rubio
Haben wir eine spring-boot (1.1.4) Projekt auf JBoss EAP 6.2 (meine der Anforderung des Kunden...)
Fand ich eine Lösung, um es auf JBoss EAP 6.2.0 GA und halten die Fähigkeit zu laufen auf Apache-Tomcat-7-container.
Zunächst mein Projekt im embedded-Modus, so muss ich erstellen und ändern einige Dateien, die zur Ausführung auf Behälter.
Laufen auf Tomcat als root-Anwendung, die ich erstellt context.xml:
/src/main/webapp/META-INF/context.xml
Laufen auf JBOSS EAP 6.2.0 GA als root-Anwendung, die ich erstellt jboss-web.xml:
/src/main/webapp/WEB-INF/jboss-web.xml
Ich eine Klasse angelegt, , weil JBoss servlet-mapping funktioniert wie /* aber nicht mit / :
Vergessen Sie nicht, rufen Sie super.onStartup(container);
Änderungen in pom.xml:
Wenn Sie spring.Profil, als Sie benötigen, um als env. variable.
Ich laufen JBoss EAP 6.2.0 GA als Stand-alone-Modus:
Wenn Sie laufen auf Tomcat, dann vergessen Sie nicht -Dspring.profile.active=lokale
Als ich den server sehen.port-Einstellung wird ignoriert, wenn Sie Sie ausführen auf container.
Aufruf neuer
AnnotationConfigWebApplicationContext()
imSpringBootServletInitializer
Unterklasse bewirkt, dass alle@Component
annotierten Objekte instanziiert werden zweimal (bitte siehe meine Antwort, wie dies zu vermeiden).Ich würde respektvoll argumentieren, dass diese Antwort nicht geeignet ist für die gestellte Frage. Die Frage ist, Spring Java Config, nicht Spring Boot. Ich glaube, dass meine Antwort immer noch am besten löst das Problem in Bezug auf das Spring Java Config. Ich habe auch aktualisiert werden, um Probleme mit JSP. stackoverflow.com/a/22395946/428628
InformationsquelleAutor István Pató
Bin ich mit Spring-Boot-1.3.1-und JBoss-EAP-6.4. Und ich fand mit, dass in Ihrem Projekt hinzuzufügen, können Sie auf src/main/resources/application.Eigenschaften dieser Linie:
Auch, wenn Sie Start aus Eclipse, sicher sein, zu reinigen Sie Ihr Projekt... ich hab viel Zeit, weil von alleine.
InformationsquelleAutor jeremy simon
Als pro die Antworten von Michael R und István Pató, das servlet-mapping in der JBoss werden muss,"/*", nicht "/". Aber auch die anderen Lösungen verursachen @Component annotiert werden Objekte instanziiert Sie zweimal. Die folgende löst die Doppel-Initialisierung durch den ersten Aufruf
super.onStartup
und dann hinzufügen eine weitere Zuordnung für den dispatcher-servlet:InformationsquelleAutor Loedolff
Ich bin mit JBoss EAP 6.4. Ich wollte den thread durch.
Möchte ich hinzufügen, dass nach der änderung Zuordnung für dispatchServlet von "/" bis "/* ". Die JSP in Ihr Projekt möglicherweise nicht richtig verarbeitet. Ich vermute, dass da "/* " Vorrang vor "/*.jsp ", daher JSPServlet vielleicht nicht immer-Anforderung zu verarbeiten, JSP und JSP wird nicht korrekt verarbeitet werden. In meinem Fall, die Quelle der JSP kommt auf den browser als text.
Ich haben beschlossen, dieses Problem durch die Definition von JSP als servlet in web.xml wie unten erwähnt. Nach, dass alles funktioniert gut für mich 🙂
Verbrachte ich viel Zeit auf diese, könnte jemand helfen :))
InformationsquelleAutor Nikunj Sharma
Gut, für jemand, der mit diesem problem konfrontiert, es funktioniert einfach gut auf den neuen Wildfly.
Wenn Sie haben keine spezielle container, um Ihre Anwendung ausführen, können Sie wählen zwischen jboss 7 und wildfly UND will laufen, spring java config, versuchen Sie es auf wildfly!
Korrektur, es funktioniert nicht für mich mit EAP 6.2. JBoss AS 7 ist ein Blindgänger. Wildfly (8) funktioniert bei mir. Oder Sie können Chaos mit dem container configuration in 7 (z.B.
enable-welcome-root="false"
imstandalone.xml
).InformationsquelleAutor Thiago Pereira
Ich hatte ähnliche Probleme mit JBoss 6.4.0. und Spring Boot 1.3 in Kombination mit Fliesen 3. Nach der Installation des Jboss-patch jboss-eap-6.4.6-patch.zip die Probleme wurden gelöst.
Nach dem patchen kann ich nicht brauchen, um verwenden Sie die Einstellung server.servlet-path=/*
InformationsquelleAutor Jan de Graaf