我正在尝试创建一个 Domino OSGI插件,它公开了一个简单的Hello World servlet。 为此,我在eclipse中创建了一个插件项目(包含web.xml和servlet),一个包含此插件和更新的站点项目的功能项目。
在此之后,我使用'Eclipse Update Site'作为模板(名称RestDemoUpdateSite.nsf)在Domino设计器中创建了一个应用程序。 在Domino管理员中打开此应用程序后,我成功导入了我的eclipse更新站点。
最后我将RestDemoUpdateSite.nsf复制到该文件夹中 - C:\ Program Files \ IBM \ Domino \ data并在notes.ini中添加了OSGI_HTTP_DYNAMIC_BUNDLES = RestDemoUpdateSite.nsf行。
链接http://<> /RestDemoUpdateSite.nsf正常打开
对http://<> /RestDemoUpdateSite.nsf/api/的GET请求给出了json响应
{
"services":[
{
"name":"Data",
"enabled":false,
"version":"9.0.1",
"href":"\/RestDemoUpdateSite.nsf\/api\/data"
},
{
"name":"Calendar",
"enabled":false,
"version":"9.0.1",
"href":"\/RestDemoUpdateSite.nsf\/api\/calendar"
},
{
"name":"Core",
"enabled":true,
"version":"9.0.1",
"href":"\/RestDemoUpdateSite.nsf\/api\/core"
}
]
}
对我的servlet的GET请求http://<> /RestDemoUpdateSite.nsf/serviceapi/student给出了错误
HTTP Web服务器:找不到设计说明 - serviceapi / student [/RestDemoUpdateSite.nsf/serviceapi/student]匿名
任何可能出错的建议或提示都会有很大的帮助。
谢谢
答案 0 :(得分:0)
第一步是确保OSGi框架正在加载您的插件。执行以下服务器控制台命令:
tell http osgi ss {bundle.name}
例如,tell http osgi ss com.ibm.domino.services
列出了与给定名称匹配的所有插件。该列表告诉您插件是处于活动状态,已解决,已安装等等。
假设您的插件正在加载,下一步是确保正确定义您的servlet。您说过包含了一个web.xml文件,但OSGi servlet通常在plugin.xml中定义。他们实施org.eclipse.equinox.http.registry.servlets
扩展。您可以在these slides中找到更多详细信息。请参阅“创建,部署和调试简单servlet”一节。