OSGi Web应用程序未运行
我想弄清楚如何实现一个Web应用程序包。 为了做到这一点,我按照本教程中的说明创建了一个小样本。 战争文件可以部署和启动,但我无法调用任何网址。
战争档案的结构;
+ META-INF
MANIFEST.MF
+ WEB-INF
类/
fancyfoods /网络/ SayHello.class
web.xml中
的index.html
我试着打电话
本地主机:8080 /
本地主机:8080 / fancyfoods.web / index.html的
本地主机:8080 / fancyfoods.web / SayHello的
但我总是得到“HTTP错误404”
我不知道什么是错的。 我是否需要更多捆绑包才能运行Web应用程序?
最好的问候
切
再一次问好,
感谢您的回复,并对错误答案(我是Stack Overflow的新手)感到抱歉。 我从零开始创建了一个新的WAB示例,但它仍然无效。 为了测试http服务是否在一般情况下工作,我首先实现了另一个包(不是WAB),它包含一个servlet和一个注册servlet和静态资源的OSGi-Component。 它的工作原理! 我可以调用html和servlet。
现在回到我的WAB问题。 由于非WAB示例的作品,我认为战争文件不正常。 我投入了更多时间为您提供必要的信息(我希望如此)。
我的战争档案的结构是:
¦---index.html
¦
+---META-INF
¦-------MANIFEST.MF
¦
+---WEB-INF
¦ web.xml
¦
+---classes
+---org
+---osgi
+---helloworld
+---wab
HelloWorldWab.class
HelloWorldWabActivator.class
HelloWorldWabComponent.class
HelloWorldWabServlet.class
MANIFEST.MF:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.7.0_09-b05 (Oracle Corporation)
Bundle-ManifestVersion: 2
Bundle-Name: org.osgi.helloworld.wab
Bundle-SymbolicName: org.osgi.helloworld.wab
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-Activator: org.osgi.helloworld.wab.HelloWorldWabActivator
Bundle-ClassPath: WEB-INF/classes
Import-Package: javax.servlet, javax.servlet.http, org.osgi.framework,
org.osgi.service.component, org.osgi.service.http, org.osgi.util.tra
cker
Export-Package: org.osgi.helloworld.wab
Web-ContextPath: /helloworld
Webapp-Context: /helloworld
当我开始和停止捆绑包时,HelloWorldWabActivator的方法被调用。
web.xml:
<web-app>
<!-- welcome file mapping -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>HelloWorldWabServlet</servlet-name>
<servlet-class>org.osgi.helloworld.wab.HelloWorldWabServletXXX</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldWabServlet</servlet-name>
<url-pattern>/HelloWorldWabServlet</url-pattern>
</servlet-mapping>
</web-app>
OSGi服务器:
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (4.2.1)
1|Active | 1|Apache Commons FileUpload (1.2.2.v20111214-1400)
2|Active | 1|Apache Commons IO (1.4.0.v20081110-1000)
3|Active | 1|Apache Felix Bundle Repository (1.6.6)
4|Active | 1|Apache Felix Configuration Admin Service (1.6.0)
5|Active | 1|Apache Felix EventAdmin (1.3.2)
6|Active | 1|Apache Felix File Install (3.2.6)
7|Active | 1|Apache Felix Gogo Command (0.12.0)
8|Active | 1|Apache Felix Gogo Runtime (0.10.0)
9|Active | 1|Apache Felix Gogo Shell (0.10.0)
10|Active | 1|Apache Felix Http Api (2.2.0)
11|Active | 1|Apache Felix Http Base (2.2.0)
12|Active | 1|Apache Felix Http Bridge (2.2.0)
13|Active | 1|Apache Felix Http Bundle (2.2.0)
14|Active | 1|Apache Felix Http Jetty (2.2.0)
15|Active | 1|Apache Felix Http Proxy (2.2.0)
16|Active | 1|Apache Felix Http Whiteboard (2.2.0)
17|Active | 1|Apache Felix Log Service (1.0.1)
18|Active | 1|Apache Felix Preferences Service (1.0.4)
19|Active | 1|Apache Felix Declarative Services (1.6.2)
20|Active | 1|Apache Felix Web Management Console (4.0.0)
21|Active | 1|JSON Implementation for Java (1.0.0.v201011060100)
22|Active | 1|org.osgi.helloworld.wab (1.0.0.qualifier)
23|Active | 1|org.osgi.helloworld.servlet (1.0.0.qualifier)
感谢您的支持
您是否还在MANIFEST文件中指定了Web-ContextPath?
http://www.javabeat.net/2011/11/writing-an-osgi-web-application/
理想情况下,您还应该在WEB-INF文件夹中指定web.xml文件。
关于如何让您的web应用程序在pax web项目上提供的OSGi-Web Container上运行,有几个不同的示例,这些示例可以帮助您解决问题并快速开始使用OSGi-WAR。 Pax-Web Samples哦,并确保你有WebApp-Context集。
我不得不添加pax-web-extender-war包(也许是pax-url)和依赖关系,以获得war-style wabs与web.xml一起工作。 为了在eclipse中的bndTools felix运行时完成这个工作,我从最新的Apache ServiceMix系统/目录中提取了所有的jar / bundle; 将它们全部导入到我的bndTools本地存储库中; 并将所有pax和jetty包添加到我的bndTools运行配置中。 (您可能需要追查一些其他依赖项)。
链接地址: http://www.djcxy.com/p/74723.html上一篇: OSGi web application not running
下一篇: Simple Web Application Bundle(WAB) in tomcat osgi implementation