我正在尝试使用带有Equinox的PDE工具在Domino中部署OSGi容器。我遵循此IBM幻灯片中的说明: http://www.slideshare.net/fiorep/domino-osgi-development?next_slideshow=1
但是(根据幻灯片#52)当我浏览到http://localhost/simpledemo(从调试配置单击调试后)时,我收到“找不到404文件”错误。
“simpledemo”是puligin.xml文件中映射的别名(幻灯片44)。然而,servlet名称是SimpleServlet。
任何想法发生了什么? 非常感谢任何帮助。
我的环境:Windows 2012 Server(在VM上),Eclipse 3.6.2,Equinox,PDE工具和Domino Server 6.01服务器。
参考:Deploying OSGi Servlet to Domino
SimpleServlet.Java
package com.ibm.ls2012;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
public class SimpleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SimpleServlet() {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
final PrintWriter pw = resp.getWriter();
resp.setContentType("text/html");
pw.println("<HTML");
pw.println("<HEAD><TITLE>SHOW112 - Simple Servlet Demo</TITLE></HEAD>");
pw.println("<BODY>");
pw.println("<BR>");
pw.println("hello world. feeling cold yet?");
}}
答案 0 :(得分:0)
我跟着类似的演示,出于某种原因有些不同。我不确定某些事情是否发生了变化,或者我是否根据Liberty上的Vaadin Web应用程序的经验采取了略微不同的方法。
我的plugin.xml包含:
<extension
point="com.ibm.pvc.webcontainer.application">
<contextRoot>
/helloWorldWC
</contextRoot>
<contentLocation>
WebContent
</contentLocation>
</extension>
这样就为“localhost / helloWorldWC /".
的插件应用程序提供了一个根。然后,在WebContent \ WEB-INF中有一个web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.paulwithers.helloWorld.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>helloWorld</url-pattern>
</servlet-mapping>
</web-app>
所以这是任何带有后续URL模式“helloWorld”的东西,所以“localhost / helloWorldWC / helloWorld”应该使用HelloWorldServlet。这在前面的元素中定义为映射到com.paulwithers.helloWorld.HelloWorldServlet
类。您可以将url-pattern更改为“*”,然后localhost / helloWorldWC将映射到HelloWorldServlet类。
要扩展它,您可以指向一个扩展javax.ws.rs.core.Application
的类,而不是指向一个单独的servlet类,该类可以包含一个getClasses()方法,该方法返回一组所有贡献的servlet。然后,每个servlet都可以有一个@Path注释来定义所使用的路径应该是什么(所有这些都是标准的JAX-RS,我相信)。这是我在this blog post附件中使用的一个过程。附件使用OpenNTF Domino API,但您感兴趣的核心元素 - plugin.xml,web.xml,Application类和Servlet类上的注释 - 是标准的。
答案 1 :(得分:0)
我要检查的第一件事是插件是否正确加载。从服务器控制台类型:tell http osgi ss {yourpluginname}。确保插件已加载并处于活动状态。如果安装了state,那么你有一个缺少的约束问题,要诊断,请输入tell http osgi diag {pluginid}。 注意:您可以从第一个ss命令获取pluginid。
如果状态已解决,则需要使用以下命令手动启动它:tell http osgi start {pluginid}。注意:不期望处于解析状态,Domino Server应自动启动所有插件。