三步学会用spring开发OSGI——(第三步:web篇)

时间:2022-05-04
本文章向大家介绍三步学会用spring开发OSGI——(第三步:web篇),主要内容包括创建web工程、遇到问题、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

接下来就是我们要创建的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 install的时候提示java的版本过低,出现的错误如下:

1 [ERROR] Unable to locate the Javac Compiler in:
2   D:Program FilesJavajre6..libtools.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 FilesJavajdk1.6.0_21jrebinjavaw.exe

注意

要在eclipse.ini文件中-startup之前设置这一行

2、window-->preferences-->java-->Installed JREs:将路径设置成jre的路径

              图:配置JDK

2、virgo中不能部署war工程,出现的错误如下:

 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的安装目录的repositoryext下,找到配置文件 org.eclipse.virgo.web.properties

原来里边设定的值是WABHeaders=strict 我们将它改成WABHeaders=defaulted就应该可以部署成功了。

[源码下载]