黄振东 2016-05-03 01:14
浏览 1150

OSGI嵌入Http服务,报错Problem accessing/ProxyServlet

启动之后,在浏览器输入http://localhost:8080/demo/page/dictquery.html
结果如下所示


HTTP ERROR: 404

Problem accessing /demo/page/dictquery.html. Reason:

ProxyServlet: /demo/page/dictquery.html

Powered by Jetty://


初学者,不知道是哪个地方出问题了,具体的Activator的代码如下:

 public class Activator implements BundleActivator, ServiceListener {

    private static BundleContext context;

    private ServiceReference ref;

    private Servlet servlet;

    static BundleContext getContext() {
        return context;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.
     * BundleContext)
     */
    public void start(BundleContext bundleContext) throws Exception {

        context = bundleContext;

        // 创建Servlet对象
        servlet = new IndexServlet(context);

        // 向HttpService注册Servlet
        registerServlet();

        // 加入对HttpService的监听
        context.addServiceListener(this, "(objectClass=" + HttpService.class.getName() + ")");
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
     */
    public void stop(BundleContext bundleContext) throws Exception {
        try {
            // 注销Servlet
            unregisterServlet();
        } catch (Throwable t) {
            t.printStackTrace();
        }

        servlet = null;
        context = null;
        ref = null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.
     * ServiceEvent)
     */
    public void serviceChanged(ServiceEvent event) {
        switch (event.getType()) {
        case ServiceEvent.REGISTERED:
            // HttpService注册到OSGi容器的时候,进行Servlet的注册
            registerServlet();
            break;

        case ServiceEvent.UNREGISTERING:
            // HttpService从OSGi容器注销的时候,注销Servlet
            unregisterServlet();
            break;
        }
    }

    /*
     * 注册Web应用
     */
    private void registerServlet() {
        if (ref == null) {
            ref = context.getServiceReference(HttpService.class.getName());
        }

        if (ref != null) {
            try {
                HttpService http = (HttpService) context.getService(ref);
                if (null != http) {
                    // 注册Servlet
                    http.registerServlet("/demo/servlet", servlet, null, null);

                    // 注册资源
                    http.registerResources("/demo/page", "/page", null);
                    System.out.println("注册成功");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /*
     * 卸载Web应用
     */
    private void unregisterServlet() {
        if (ref != null) {
            try {
                HttpService http = (HttpService) context.getService(ref);
                if (null != http) {
                    http.unregister("/demo/servlet");
                    http.unregister("/demo/page");
                    System.out.println("已卸载字典查询web模块!");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}


在线狂等,哪位大侠看见,求给小弟指点迷津,谢谢!

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥20 iqoo11 如何下载安装工程模式
    • ¥15 本题的答案是不是有问题
    • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
    • ¥15 C++使用Gunplot
    • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?