接下來就是我們要創建的web工程了,為了簡單,我們直接利用virgo所帶的模板來新建工程,控制層使用的是spring mvc 3。
創建web工程
打開STS,新建工程,我們選擇Sprinng Template Project
圖:新建spring template project
選擇Spring MVC Project
圖:模板選擇
向下,然后輸入工程名和包名,就是我塗紅的兩部分
圖:輸入工程名及包名
點擊完成,中間可能需要下載文件,正常選擇下載就可以了。
然后看我們的工程,工程結構的目錄如下,其實就是一個標准的maven web工程
圖:工程結構
工程創建完成后,我們執行一下maven clean和maven install,如果沒有問題,工程上的錯誤提示就會消失。
我們將工程加入到virgo中,其實跟其它應用服務器的處理方式是一樣的,如下圖:

圖:virgo部署應用
然后我們啟動virgo。
當提示
圖:virgo啟動成功
說明應用已經成功啟動了。
我們在瀏覽器中輸入
http://localhost:8080/EchoSpringmvc/
就能看到可以使用的工程了。
圖:應用運行
再向下的開發其實和前邊差不多,就是如何處理模塊之間的關系,如何整合應用,如何划分模塊。
遇到問題
1、maven中出現錯誤,有spring的jar包不能從遠程下載。pom.xml中提示錯誤如下:
圖:maven中不能下載的錯誤
這個可能就得借助代理服務器或者翻牆軟件了,沒什么好的辦法,因為這個是無法訪問遠程的鏈接,去找一款翻牆軟件吧!
2、執行maven install的時候提示java的版本過低,出現的錯誤如下:
View Code
1 [ERROR] Unable to locate the Javac Compiler in: 2 D:\Program Files\Java\jre6\..\lib\tools.jar 3 Please ensure you are using JDK 1.4 or above and 4 not a JRE (the com.sun.tools.javac.Main class is required). 5 In most cases you can change the location of your Java 6 installation by setting the JAVA_HOME environment variable.
解決方法:
1、在eclipse.ini文件中設置
-vm
C:\Program Files\Java\jdk1.6.0_21\jre\bin\javaw.exe
注意
要在eclipse.ini文件中-startup之前設置這一行
2、window-->preferences-->java-->Installed JREs:將路徑設置成jre的路徑

圖:配置JDK
3、virgo中不能部署war工程,出現的錯誤如下:
View Code
1 [2012-08-03 13:33:19.450] start-signalling-2 <DE0006E> Start failed for bundle 'EchoSpringmvc' version '0.0.0'. org.eclipse.virgo.kernel.deployer.core.DeploymentException: Web application failed to start 2 at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:132) 3 at org.eclipse.virgo.kernel.install.artifact.internal.StandardArtifactStateMonitor.onStarted(StandardArtifactStateMonitor.java:247) 4 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:294) 5 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:291) 6 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:229) 7 at org.eclipse.virgo.kernel.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:143) 8 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 9 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 10 at java.lang.Thread.run(Thread.java:662) 11 Caused by: org.eclipse.gemini.web.core.WebApplicationStartFailedException: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/EchoSpringmvc' failed to start. Check the logs for more details. 12 at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:108) 13 at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122) 14 ... 8 common frames omitted 15 Caused by: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/EchoSpringmvc' failed to start. Check the logs for more details. 16 at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:125) 17 at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:91) 18 ... 9 common frames omitted
這個需要修改virgo的配置文件,我們到virgo的安裝目錄的repository\ext下,找到配置文件 org.eclipse.virgo.web.properties
原來里邊設定的值是WABHeaders=strict
我們將它改成WABHeaders=defaulted就應該可以部署成功了。
