2016-03-30 3 views
-2

Я новичок в maven и spring-boot, я загрузил проект maven (эмулятор ssh через веб-интерфейс) githubМой файл jar, созданный из проекта maven со всеми его зависимостями, является исполняемым, но не запускает его основной класс

Я попытался сделать этот проект исполняемым банком, чтобы впоследствии использовать его в своем проекте веб-приложений, чтобы предоставить пользователям возможность использования эмулятора ssh.

Я прочитал некоторые документы и узнал, как создать исполняемый файл jar со всеми зависимостями от maven.

После записи на пленку эту команду java -jar jar_file_with_all_dependencies.jar пружинные загрузки возвращает это сообщение

Starting ApplicationStarter on admin-PC with PID 37824 (C:\ 
Developement\maven-repo\ssh-on-web-master\target\ssh-on-web-1.0-SNAPSHOT- jar- with-dependencies.jar started by admin in C:\Developement\maven-repo\ssh- on-web- master\target) 
    2016-03-30 14:21:48.856 INFO 37824 --- [    main]ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplication  [email protected]: startup date [Wed Mar 30 14:21 
    :48 GMT+01:00 2016]; root of context hierarchy 
    2016-03-30 14:21:49.328 INFO 37824 --- [   main]  s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s):  8081/http 
    2016-03-30 14:21:49.528 INFO 37824 --- [   main]  o.apache.catalina.core 
    .StandardService : Starting service Tomcat 
    2016-03-30 14:21:49.528 INFO 37824 --- [   main]  org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache  Tomcat/8.0.15 
     2016-03-30 14:21:49.619 INFO 37824 --- [ost-startStop-1] o.a.c.c.C. [Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 
    2016-03-30 14:21:49.620 INFO 37824 --- [ost-startStop-1]  o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 764ms 
    2016-03-30 14:21:49.690 INFO 37824 --- [   main] o.s.s.c.ThreadPoolTask 
    Scheduler   : Initializing ExecutorService  'defaultSockJsTaskScheduler' 
    2016-03-30 14:21:49.880 INFO 37824 --- [   main] o.s.w.s.handler.Simple 
    UrlHandlerMapping : Mapped URL path [/shell/**] onto handler of type [class org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler] 
    2016-03-30 14:21:49.960 INFO 37824 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081/http 
    2016-03-30 14:21:49.960 INFO 37824 --- [   main] com.kodcu.ApplicationStarter : Started ApplicationStarter in 1.334 seconds (JVM running for 1.585) 

Это сообщение означает, что файл банку начал свой главный-класс, но в действительности ничего не произошло. почему мой веб-браузер не запускает автоматически страницу localhost, поэтому я могу манипулировать эмулятором ssh? Нужно ли вводить что-то еще в URL?

Для получения более подробной информации: Основной класс:

package com.kodcu; 

    import org.springframework.boot.SpringApplication; 
    import org.springframework.boot.autoconfigure.SpringBootApplication; 
    import org.springframework.context.annotation.Bean; 
    import org.springframework.web.socket.WebSocketHandler; 
    import org.springframework.web.socket.config.annotation.EnableWebSocket; 
    import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 
    import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 
    import org.springframework.web.socket.handler.PerConnectionWebSocketHandler; 

    @SpringBootApplication 
    @EnableWebSocket 


    public class ApplicationStarter implements WebSocketConfigurer { 

     public static void main(String[] args) { 
      SpringApplication.run(ApplicationStarter.class, args); 
     } 

     @Override 
     public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
      registry.addHandler(myHandler(), "/shell").withSockJS(); 
     } 

     @Bean 
     public WebSocketHandler myHandler() { 
      return new PerConnectionWebSocketHandler(ShellSocket.class); 
     } 



    } 

ServletInitializer.java:

 package com.kodcu; 

    import java.util.concurrent.TimeUnit; 
    import org.springframework.boot.autoconfigure.SpringBootApplication; 
    import org.springframework.boot.builder.SpringApplicationBuilder; 
    import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; 
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 
    import org.springframework.boot.context.web.SpringBootServletInitializer; 
    import org.springframework.context.annotation.Bean; 
    @SpringBootApplication 

    public class ServletInitializer extends SpringBootServletInitializer { 

      @Override 
      protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
        return application.sources(ApplicationStarter.class); 
      } 
      @Bean 
     public EmbeddedServletContainerFactory servletContainer() { 
      TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 
      factory.setPort(8081); 
      factory.setSessionTimeout(50, TimeUnit.MINUTES); 
      return factory; 
     } 


    } 

pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 
     <packaging>war</packaging> 

      <parent> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-parent</artifactId> 
      <version>1.2.0.RELEASE</version> 
      <relativePath/> 
      <!-- lookup parent from repository --> 
     </parent> 

     <groupId>ssh-on-web</groupId> 
     <artifactId>ssh-on-web</artifactId> 
     <version>1.0-SNAPSHOT</version> 

     <properties> 
      <maven.compiler.source>1.8</maven.compiler.source> 
      <maven.compiler.target>1.8</maven.compiler.target> 
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     </properties> 

     <dependencies> 
      <dependency> 
       <groupId>com.hierynomus</groupId> 
       <artifactId>sshj</artifactId> 
       <version>0.11.0</version> 
      </dependency> 
      <dependency> 
       <groupId>net.sf.expectit</groupId> 
       <artifactId>expectit-core</artifactId> 
       <version>0.6.1</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-web</artifactId> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-websocket</artifactId> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>javax.el</groupId> 
       <artifactId>javax.el-api</artifactId> 
       <version>2.2.4</version> 
      </dependency> 
     </dependencies> 

     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-maven-plugin</artifactId> 

       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-jar-plugin</artifactId> 
        <version>2.2</version> 
        <!-- nothing here --> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <version>2.2-beta-4</version> 
        <configuration> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <archive> 
          <manifest> 
           <mainClass>com.kodcu.ApplicationStarter</mainClass> 
          </manifest> 
         </archive> 
        </configuration> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 

     </build> 


    </project> 

ответ

0

Команда запуска встроенного сервера приложений Tomcat на ваш хост, используя порт 8081. Порт - оштрафованы в вашем классе: factory.setPort (8081); Как я понимаю, ваш образец кода, ваш единственный сервис - это websocket на пути/оболочке Вот и все, что вам даст командная строка. Чтобы увидеть сайт, вы должны открыть себя свой браузер и перейти на URL вашего приложения (http://localhost:8081/shell)

Кроме того, проверьте, если у вас нет файла application.properties, задающие корневой контекст, используя свойство " server.context-путь». Если это так, вы должны положить его в URL (http://localhost:8081//оболочка

+0

Я попытался как Http: // Localhost: 8081/оболочка, http: // Localhost: 8081 // оболочки и они return http Status 404. –

+0

Я отредактировал мой pom.xml и изменил тип пакета на jar. теперь, когда я набираю localhost: 8081/shell, он возвращает «Добро пожаловать в SockJS!». :( –

0

Я изменил тип пакета в pom.xml от war к jar.

Я также добавил эти строки в main.class

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 
    factory.setPort(8081); 

    return factory; 
} 

Я также генерироваться файл банку и выполнить его, и он работает на 100%, когда я типа http://localhost:8081/