/** * Copyright 2012 Anjuke Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.anjuke.romar.http.jetty; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.server.handler.RequestLogHandler; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import ch.qos.logback.access.jetty.RequestLogImpl; import com.anjuke.romar.core.CoreContainer; import com.anjuke.romar.core.RomarConfig; import com.sun.jersey.spi.container.servlet.ServletContainer; public final class RomarRESTMain { private final static String ACCESS_LOG_CONF_FILE = "access.xml"; private RomarRESTMain() { } public static void main(String[] args) throws Exception { java.util.logging.Logger rootLogger = java.util.logging.LogManager .getLogManager().getLogger(""); java.util.logging.Handler[] logHandlers = rootLogger.getHandlers(); for (int i = 0; i < logHandlers.length; i++) { rootLogger.removeHandler(logHandlers[i]); } org.slf4j.bridge.SLF4JBridgeHandler.install(); RomarConfig config = RomarConfig.getInstance(); //fast fail init CoreContainer.getCore(); Server server = new Server(config.getServerPort()); ServletContextHandler context = new ServletContextHandler( ServletContextHandler.NO_SESSIONS); ServletHolder servletHolder = new ServletHolder(new ServletContainer()); servletHolder.setInitParameter("com.sun.jersey.config.property.packages", "com.anjuke.romar.http.rest;org.codehaus.jackson.jaxrs;com.anjuke.romar.http.rest.exception"); servletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true"); HandlerCollection handlers = new HandlerCollection(); RequestLogHandler requestLogHandler = new RequestLogHandler(); RequestLogImpl requestLog = new RequestLogImpl(); String romarHome = System.getProperty("romar.home"); if (romarHome == null) { requestLog.setResource("/" + ACCESS_LOG_CONF_FILE); } else { requestLog.setFileName(romarHome + "/conf/" + ACCESS_LOG_CONF_FILE); } requestLogHandler.setRequestLog(requestLog); handlers.setHandlers(new Handler[] {context, requestLogHandler}); context.addServlet(servletHolder, "/*"); server.setHandler(handlers); server.start(); try{ server.join(); }finally{ server.stop(); server.destroy(); } } }