2 u011732005 u011732005 于 2016.05.03 09:14 提问

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();
            }
        }
    }

}


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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
OSGI运行Servlet(使用Equinox框架)
1.目的 在这
geoserver打开服务地址
报错信息:HTTP ERROR: 503 Problem accessing /geoserver/web. Reason: Service Unavailable请查看geoserver版本对应的java JDK版本(必须对应)
[已解决]XMPP访问7070/http-bind/出错:HTTP ERROR 400 Problem accessing /http-bind/ Reason: Bad Request Powere
[已解决]XMPP访问7070/http-bind/出错:HTTP ERROR 400 Problem accessing /http-bind/ Reason: Bad Request Powered by Jetty:// http://192.168.1.110:7070/http-bind/ 出错: HTTP ERROR: 400 Probl
使用jetty作为内嵌服务器启动项目
需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中。在网上搜索了一些资料,参照后,都没有成功,经过3天的研究,终于搞定了,记录在此,以备查询。 最开始用的jetty8.1,没成功,后又下载7.6,仍然没有成功,最后使用了jetty7.0后成功。对于8.1和7.6后来没有再试,应该是一样的步骤,有兴趣或者有时间容后再试。 步骤: 1、首先下载jetty的jar包
[笔记]Hbase入门集群搭建
在之前: [笔记]hadoop2.4.1分布式集群搭建入门/ha/zookeeper 基础上进行部署安排: 在03,04上面安装主节点master,因为只做均衡负载和调度 在05、06、07上面运行regionservers,需要存储表在hdfs上面 主机名 IP 安装的软件 运行的进程 had03 192.168.184.143 Hbase HMaster
访问activemqProblem accessing /. Reason: Service Unavailable Powered by Jett
启动./activemq start Windows环境下访问172.17.112.31:8161 默认端口号是8161 报错如上:   翻看ActiveMQ官方文档  使用activemq console参数进行前台启动,可能会暴露出错误原因,于是命令如下:   # 停用服务 Activemq service activemq
geoserver error 503 service unavailable
geoserver error 503 service unavailable
birt 用View Report in Web Viewer方式查看报表异常
用View Report in Web Viewer方式查看报表,出现上面的异常, 我的环境:WI
openfire 部署问题
在32位xp上安装官网下载的openfire 没有遇到什么问题,如果下载不含java环境的zip包,无法启动,就下载含有Java环境的exe。 安装spark的时候,若提示install4j错误,需要再安装一个1.5或者1.6版本的jdk,我的是1.7版本的jdk。 蛋疼的问题发生在这两天,在64位的win8上安装 部署openfire。 问题一,安装好后,启动,提示什么 java.
安装OpenFire时出现HTTP ERROR 500问题的解决
在安装OpenFire时,点击“continue"时 出现 HTTP ERROR 500   Problem accessing /setup/setup-profile-settings.jsp. Reason:   Server Error   解决: -bash-4.1$ ./openfire stop Shutting down openfire Stopped. -