jetty HTTP ERROR: 503

我输入地址:http://localhost/ctc-emassh (其中ctc-emassh是项目名称,这是一个基于ssh框架开发的程序)

Problem accessing /ctc-emassh. Reason:

Service Unavailable

Powered by Jetty://

但是我写一个简单的servlet应用:login程序,程序正常执行。

//嵌入的jetty web容器程序
public class JettyWebContainer {
public Server server;

@Inject
ILog logger;

@Inject
ResourceLocator rs;

private ContextHandlerCollection handlers = new ContextHandlerCollection();

public WebAppContext newAppContext(File file) {
    String appname = file.getName();
    String dir = file.getAbsolutePath();
    final WebAppContext context = new WebAppContext();
    context.setDescriptor(dir + "/WEB-INF/web.xml");
    context.setResourceBase(dir);
    context.setContextPath("/" + appname);
    context.setParentLoaderPriority(true);//是否与java2兼容
    return context;
}

private static File[] loadAppList(File appDir) {
    return appDir.listFiles(new FileFilter() {
        public boolean accept(File pathname) {
            return pathname.isDirectory();
        }
    });
}

@Start
public void start() throws Exception {
    int port = 80;
    logger.info("port:" + port);
    server = new Server(port);

    for (File appf : loadAppList(rs.getFile("webapp"))) {
        addHandler(newAppContext(appf));
    }
    server.setHandler(handlers);
    try {
        server.start();
        logger.info("server start ok!");
    } catch (Exception e) {
        logger.error(e, "server start failed!");
        throw e;
    }
}

@Stop
public void stop() throws Exception {
    try {
        server.stop();
        logger.info("stop JettyWebContainer ok!");
    } catch (Exception e) {
        logger.error(e, "未成功关闭server");
        throw e;
    }
}

public void addHandler(Handler handler) {
    logger.info("JettyWebContainer add handler %s", handler);
    handlers.addHandler(handler);
}

public void removeHandler(Handler handler) {
    logger.info("JettyWebContainer remove handler %s", handler);
    handlers.removeHandler(handler);
}

}

小弟,遇到这问题迟迟不能解决,待解决!

[code="java"]
FAILED org.eclipse.jetty.security.ConstraintSecurityHandler@17ec9f7: java.lang.IllegalStateException: No LoginService for
[/code]
问题在这里。你可以试试下面的代码:
[code="java"]
Server server = new Server();

SocketConnector connector = new SocketConnector();
// Set some timeout options to make debugging easier.
connector.setMaxIdleTime(1000 * 60 * 60);
connector.setSoLingerTime(-1);
connector.setPort(PORT);
server.addConnector(connector);

WebAppContext webAppCtx = new WebAppContext();
webAppCtx.setServer(server);
webAppCtx.setContextPath("/");
webAppCtx.setWar("src/main/webapp");

HashLoginService dummyLoginService = new HashLoginService(
"TEST-SECURITY-REALM");
webAppCtx.getSecurityHandler().setLoginService(dummyLoginService);

server.setHandler(webAppCtx);

try {
server.start();
System.in.read();
server.stop();
server.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(100);
}
[/code]

你写一个嵌入式Jetty容器干嘛,你的ssh应用也是运行在嵌入式jetty容器里面的吗?既然“Service Unavailable ”,说明你的ssh应用有问题,启动过程可能就有错误了,把日志级别调高,看看启动过程有什么错误。

[quote]我在tomcat下运行ssh应用是没有问题的,但不知道为什么在Jetty下报这个错![/quote]
你调高日志级别,看看什么错误!

启动路径和tomcat是不同的 这个你得仔细检查一下

我觉得应该你在启动的时候是不是调用了什么方法 是多次调用的。

比如在我曾经在jsp里面两次调用response.sendRedirct。
或则你调用了 response.getOutputStream()然后又调用response.getWriter(),也会出现这中情况 lz细心看一下。