http://grahamhackingscala.blogspot.f...ebapp-how.html
Now I'm stuck in the 4th step : Start the Webapp with Maven using the Jetty Plugin. This is what the browser is displaying :
Expand|Select|Wrap|Line Numbers
- HTTP ERROR 404
- Problem accessing /hello.html. Reason:
- Servlet Not Initialized
- Caused by:
- javax.servlet.UnavailableException: Servlet Not Initialized
- at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:529)
- at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:488)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
- at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
- at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
- at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:973)
- at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
- at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
- at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:907)
- at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
- at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
- at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
- at org.eclipse.jetty.server.Server.handle(Server.java:346)
- at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
- at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:924)
- at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582)
- at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
- at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
- at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
- at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
- at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
- at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
- at java.lang.Thread.run(Thread.java:722)
- And this is the log im having during the initialisation :
- java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
- at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
- at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
- at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
- at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
- at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
- at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
- at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424)
- at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377)
- at org.eclipse.jetty.util.Loader.loadClass(Loader.java:92)
- at org.eclipse.jetty.util.Loader.loadClass(Loader.java:71)
- at org.eclipse.jetty.servlet.Holder.doStart(Holder.java:92)
- at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:255)
- at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
- at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:779)
- at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:255)
- at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1212)
- at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
- at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
- at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256)
- at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
- at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
- at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)
- at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
- at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
- at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
- at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
- at org.eclipse.jetty.server.Server.doStart(Server.java:262)
- at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
- at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
- at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
- at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
- at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:514)
- at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
- at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
- at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
- at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
- at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
- at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
- at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
- at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
- at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
- at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
- at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:601)
- at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
- at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
- at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
- at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
- first here s pom.xml:
- <!-- language: xml -->
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.mycompany</groupId>
- <artifactId>scala-spring-hibernate</artifactId>
- <version>1.0-SNAPSHOT</version>
- <inceptionYear>2008</inceptionYear>
- <packaging>war</packaging>
- <properties>
- <scala.version>2.10.1</scala.version>
- <org.springframework.version>3.0.0.RELEASE</org.springframework.version>
- </properties>
- <repositories>
- <repository>
- <id>scala-tools.org</id>
- <name>Scala-Tools Maven2 Repository</name>
- <url>http://scala-tools.org/repo-releases</url>
- </repository>
- <repository>
- <id>com.springsource.repository.bundles.release</id>
- <name>EBR Spring Release Repository</name>
- <url>http://repository.springsource.com/maven/bundles/release</url>
- </repository>
- <repository>
- <id>com.springsource.repository.bundles.external</id>
- <name>EBR External Release Repository</name>
- <url>http://repository.springsource.com/maven/bundles/external</url>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>scala-tools.org</id>
- <name>Scala-Tools Maven2 Repository</name>
- <url>http://scala-tools.org/repo-releases</url>
- </pluginRepository>
- </pluginRepositories>
- <dependencies>
- <dependency>
- <groupId>org.scala-lang</groupId>
- <artifactId>scala-library</artifactId>
- <version>${scala.version}</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.context</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.transaction</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.orm</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.web</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.web.servlet</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.1.1</version>
- </dependency>
- </dependencies>
- <build>
- <sourceDirectory>src/main/scala</sourceDirectory>
- <testSourceDirectory>src/test/scala</testSourceDirectory>
- <plugins>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty-maven-plugin</artifactId>
- <version>8.0.4.v20111024</version>
- </plugin>
- <plugin>
- <groupId>org.scala-tools</groupId>
- <artifactId>maven-scala-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>compile</goal>
- <goal>testCompile</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <scalaVersion>${scala.version}</scalaVersion>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-eclipse-plugin</artifactId>
- <configuration>
- <downloadSources>true</downloadSources>
- <buildcommands>
- <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand>
- </buildcommands>
- <additionalProjectnatures>
- <projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature>
- </additionalProjectnatures>
- <classpathContainers>
- <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
- <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer>
- </classpathContainers>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.scala-tools</groupId>
- <artifactId>maven-scala-plugin</artifactId>
- <configuration>
- <scalaVersion>${scala.version}</scalaVersion>
- </configuration>
- </plugin>
- </plugins>
- </reporting>
- </project>
- Here is my web.xml :
- <!-- language: xml -->
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- id="scala-spring-hibernate"
- version="2.5">
- <servlet>
- <servlet-name>dispatcher</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/web-context.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>dispatcher</servlet-name>
- <url-pattern>*.html</url-pattern>
- </servlet-mapping>
- This the web-context.xml :
- <!-- language: 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"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <context:component-scan
- base-package="com.mycompany.spring.web"/>
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">
- <property name="viewClass"
- value="org.springframework.web.servlet.view.JstlView"/>
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
- My JSP is containing the following code :
- <!-- language: xml -->
- <%@page contentType="text/html;"%>
- <html>
- <body>
- <h1>Hello from ${pageContext.request.serverName}</h1>
- </body>
- </html>
- My scala class :
- <!-- language: java -->
- import org.springframework.stereotype.Controller
- import org.springframework.web.bind.annotation.RequestMapping
- @Controller
- class HelloWorldController {
- @RequestMapping(Array("/hello.html"))
- def showHello = "helloPage"
- }
Can you help me please ?