问题描述
我输入地址:http://localhost/ctc-emassh (其中ctc-emassh是项目名称,这是一个基于ssh框架开发的程序)Problem accessing /ctc-emassh. Reason: Service UnavailablePowered by Jetty:// 但是我写一个简单的servlet应用:login程序,程序正常执行。//嵌入的jetty web容器程序public class JettyWebContainer {public Server server;@InjectILog logger;@InjectResourceLocator 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();}});}@Startpublic 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;}}@Stoppublic 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);}} 小弟,遇到这问题迟迟不能解决,待解决! 问题补充:myali88 写道
解决方案
FAILED org.eclipse.jetty.security.ConstraintSecurityHandler@17ec9f7: java.lang.IllegalStateException: No LoginService for 问题在这里。你可以试试下面的代码: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);}
解决方案二:
我觉得应该你在启动的时候是不是调用了什么方法 是多次调用的。 比如在我曾经在jsp里面两次调用response.sendRedirct。或则你调用了 response.getOutputStream()然后又调用response.getWriter(),也会出现这中情况 lz细心看一下。
解决方案三:
启动路径和tomcat是不同的 这个你得仔细检查一下
解决方案四:
引用我在tomcat下运行ssh应用是没有问题的,但不知道为什么在Jetty下报这个错!你调高日志级别,看看什么错误!
解决方案五:
你写一个嵌入式Jetty容器干嘛,你的ssh应用也是运行在嵌入式jetty容器里面的吗?既然“Service Unavailable ”,说明你的ssh应用有问题,启动过程可能就有错误了,把日志级别调高,看看启动过程有什么错误。