我在使用servletbridge osgi實現訪問在tomcat中部署的簡單WAB時遇到問題。tomcat中的簡單Web應用程序包(WAB)osgi實現
我能夠使用純粹的osgi包使用HttpService以編程方式註冊jsp/servlets/html並且可以訪問這個包。接下來我嘗試的是創建一個包含一個html和一個servlet資源的單獨WAB,但遇到訪問該包的一些問題。我嘗試了震動和未捆綁的捆綁。我現在假設的是,對於WAB,我不需要以編程方式或以聲明方式註冊我的資源?
下面是我創建的WAB包。它不包含任何Http Service Tracker,只是一個在控制檯上顯示激活和停用消息的激活器。
sample.http1
helloworld.html
|META-INF
MANIFEST.MF
|WEB-INF
web.xml
|classes
|sample
|http
Activator.class
HelloWorldServlet.class
下面是MANIFEST.MF文件
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: sample.http1
Bundle-SymbolicName: sample.http1
Bundle-Version: 1.0.0
Bundle-Activator: sample.http.Activator
Import-Package: javax.servlet,javax.servlet.http,org.osgi.framework, org.osgi.service.http, org.osgi.util.tracker
Bundle-ClassPath: WEB-INF/classes
Web-ContextPath: /samplehttp
下面是Activator類
package sample.http;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public void start(BundleContext context) throws Exception {
System.out.println("Starting Hello World");
}
public void stop(BundleContext context) throws Exception {
System.out.println("Stopping Hello World");
}
}
下面的代碼是web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>sample.http.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
</web-app>
的內容然後我激活了這個包。並嘗試訪問下面的WAB資源,但我得到一個404頁面資源未找到錯誤。
http://localhost/bridge/samplehttp/helloworld.html
- 用於在靜態html
http://localhost/samplehttp/helloworld.html
http://localhost/bridge/samplehttp/helloworld
- 用於在HelloWorldServlet
http://localhost/samplehttp/helloworld
的Tomcat託管在端口80,我可以訪問我的其他OSGi包它們是使用HttpService以編程方式註冊的。下面的osgi包完美地工作。
e.g http://localhost/bridge/jsp-examples/helloworld.jsp
請指點。我已經參考了osgi規範文檔和另一個博客 http://www.javabeat.net/2011/11/writing-an-osgi-web-application/
你確實需要在Tomcat中運行你的應用程序嗎?曾考慮遷移到像Apache Karaf或Eclipse Virgo這樣的OSGi容器? –
@AchimNierbeck我實際上正在研究現有的部署。 Osgi tomcat是SAP業務對象4工具中使用的標準部署。我有興趣添加自己的捆綁包,因此我無法更改其現有結構。 –