001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.server.config;
018
019import org.apache.juneau.commons.inject.*;
020import org.apache.juneau.microservice.*;
021import org.apache.juneau.microservice.jetty.*;
022import org.apache.juneau.server.config.rest.*;
023
024import jakarta.servlet.*;
025
026/**
027 * Entry-point class.
028 */
029public class App {
030
031   /**
032    * Entry-point method.
033    *
034    * @param args Command-line arguments.
035    * @throws Exception Error occurred.
036    */
037   public static void main(String[] args) throws Exception {
038      // @formatter:off
039      Microservice
040         .create()
041         .args(args)
042         .configurations(JettyConfiguration.class, AppConfig.class)
043         .build()
044         .start()
045         .startConsole()
046         .join();
047      // @formatter:on
048   }
049
050   /**
051    * Application-specific configuration class contributing the {@link LoadConfigResource} servlet.
052    */
053   @Configuration
054   public static class AppConfig {
055
056      /**
057       * Provides the {@link LoadConfigResource} REST servlet, auto-mounted by {@link JettyServerComponent} at
058       * {@link org.apache.juneau.rest.server.Rest#path()}.
059       *
060       * @return The servlet.
061       */
062      @Bean
063      public Servlet loadConfigResource() {
064         return new LoadConfigResource();
065      }
066   }
067}