首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quercus未在Embedded Jetty 6中运行

Quercus未在Embedded Jetty 6中运行
EN

Stack Overflow用户
提问于 2013-03-04 02:00:20
回答 2查看 798关注 0票数 0

在过去的几个月里,我一直在尝试将Jetty和Quercus嵌入到我的应用程序中,但还没有成功。我使用的是Jetty版本6.1.26和Quercus 4.0.25。

我已经将以下jars与我的应用程序打包在一起: jetty-6.1.26.jar、jetty-util-6.1.26.jar和servlet-api-2.5-20081211.jar,它们是我从jetty/lib目录复制的。

下面是我的代码,它在自己的线程上运行:

代码语言:javascript
复制
public void run(){
    try{
        server = new Server(Plugin.port);

        WebAppContext wac = new WebAppContext();
        wac.setWar(Plugin.resourceBase);
        wac.setDescriptor(Plugin.resourceBase + "WEB-INF/web.xml");
        wac.setContextPath("/");
        wac.setParentLoaderPriority(true);
        server.setHandler(wac);

        server.setStopAtShutdown(true);

        server.start();

        Plugin.instance.getLogger().log(Level.INFO, "Started web server at port " + Plugin.port);
    }catch(Exception e){
        Plugin.instance.getLogger().log(Level.SEVERE, "Cannot start web server at port " + Plugin.port + "!");
        Plugin.instance.getLogger().log(Level.SEVERE, e.getMessage());
    }
}

在资源基目录中,我有一个WEB-INF文件夹,其中包含一个web.xml文件以及Quercus的WEB-INF/lib和/licenses。lib文件夹中的jar是cdi-16.jar、javaee-16.jar、javamail-141.jar和resin.jar。

web.xml在其web应用程序标签下有以下内容:

代码语言:javascript
复制
<servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<init-param>
  <param-name>license-directory</param-name>
  <param-value>WEB-INF/licenses</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>Quercus Servlet</servlet-name>
  <url-pattern>*.php</url-pattern>
</servlet-mapping>

<welcome-file-list>
  <welcome-file>index.php</welcome-file>
</welcome-file-list>

当我启动该程序时,我在控制台中收到以下消息:

10:31:46 SEVERE 2013-03-03 10:31:46.570:INFO:/:不可用javax.servlet.UnavailableException: Servlet类Servlet不是javax.servlet.Servlet

然后我可以访问Jetty服务器上的HTML文件,但是当我尝试访问PHP文件时,我收到一条消息

代码语言:javascript
复制
javax.servlet.UnavailableException: Servlet class com.caucho.quercus.servlet.QuercusServlet is not a javax.servlet.Servlet
at org.mortbay.jetty.servlet.ServletHolder.checkServletType(ServletHolder.java:362)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:243)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at me.jsn_man.WebServer.WebServer.run(WebServer.java:52)

如果有人能提供帮助,我们将不胜感激。

另外,如果你对我应该使用的Jetty和Quercus的版本有什么建议,那也会很有帮助。我之所以使用Jetty 6,是因为它是拥有最多嵌入文档的版本。

EN

回答 2

Stack Overflow用户

发布于 2013-03-04 02:18:53

最近我也做了同样的事情。

此处http://caucho.com/download/quercus-4.0.25.war提供的

  • Jetty 6.1.26
  • Quercus

然后,我将war解压缩到当前工作目录中的quercus文件夹中,不做任何修改。

在embedded Jetty中设置如下:

代码语言:javascript
复制
    WebAppContext webapp = new WebAppContext();
    webapp.setContextPath("/");
    webapp.setWar("./quercus");

    server.setHandler(webapp);
票数 0
EN

Stack Overflow用户

发布于 2013-03-12 07:14:23

尝试从Quercus war中删除javaee-16.jar。我将把它从未来的Quercus发行版中删除。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15188830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档