2016-10-01 15 views
6

Mam plik .war, który po skopiowaniu do folderu webapps w mojej lokalnej instancji Tomcat 9, a następnie uruchamia się pomyślnie. Jakimś sposobem, gdy próbuję uruchomić go na urządzeniu Openshift (Tomcat 7), nie zostanie wdrożony. Kroki, które podejmuję:Cant wdrożyć prostą aplikację internetową Spring Boot do OpenShift

0: Sklonuję zdalne repozytorium.

1: Kopiuje plik wojny do folderu webapps w repozytorium git.

2: wciskam go do zdalnego repo i mam wyjścia:

Writing objects: 100% (5/5), 4.50 KiB | 0 bytes/s, done. 
Total 5 (delta 3), reused 0 (delta 0) 
remote: Stopping jbossews cartridge 
remote: Sending SIGTERM to jboss:341147 ... 
remote: Building git ref 'master', commit 90c82a4 
remote: Skipping Maven build due to absence of pom.xml 
remote: Preparing build for deployment 
remote: Deployment id is a9215a94 
remote: Activating deployment 
remote: Starting jbossews cartridge 
remote: Found 127.12.55.129:8080 listening port 
remote: ------------------------- 
remote: Git Post-Receive Result: success 
remote: Activation status: success 
remote: Deployment completed with status: success 
  • W repo był plik .pom i src Folder którego usunięte. pom

Projekt:

<?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> 

    <groupId>com.tomek.example</groupId> 
    <artifactId>SimpleApp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>SimpleApp</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </parent> 

    <properties> 
     <java.version>1.8</java.version> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 

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


</project> 

główna Java:

@SpringBootApplication 
@ComponentScan({"controllers", "rest"}) 
public class SimpleAppApplication extends SpringBootServletInitializer{ 

    public static void main(String[] args) { 
     ConfigurableApplicationContext ctx = SpringApplication.run(SimpleAppApplication.class, args); 

    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     return builder.sources(applicationClass); 
    } 

    private static final Class<SimpleAppApplication> applicationClass = SimpleAppApplication.class; 

} 

głównej Kontroler:

@RestController 
public class MainController { 


    @RequestMapping("/") 
    public String text(){ 
     return "ja pierdole wygral jebany!"; 
    } 

} 

EDIT Sprawdziłem logi serwera i mam dużo tego typ er RorS:

SEVERE: Unable to process Jar entry [javassist/ByteArrayClassPath.class] from Jar [jar:jndi:/localhost/Simple/WEB-INF/lib/javassist-3.20.0-GA.jar!/] for annotations 
java.io.EOFException 
     at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340) 
     at org.apache.tomcat.util.bcel.classfile.Utility.swallowMethodParameters(Utility.java:796) 
     at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:171) 
     at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:57) 
     at org.apache.tomcat.util.bcel.classfile.Method.<init>(Method.java:71) 
     at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:267) 
     at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:127) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2058) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1934) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1900) 
     at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1885) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1317) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:876) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:374) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 

** Tomcat dzienniki **

Oct 07, 2016 1:18:32 PM org.apache.catalina.startup.Catalina addClusterRuleSet 
INFO: Cluster RuleSet not found due to [java.lang.ClassNotFoundException: org.apache.catalina.ha.ClusterRuleSet]. Cluster configuration disabled. 
Oct 07, 2016 1:18:32 PM org.apache.catalina.startup.Catalina addClusterRuleSet 
INFO: Cluster RuleSet not found due to [java.lang.ClassNotFoundException: org.apache.catalina.ha.ClusterRuleSet]. Cluster configuration disabled. 
Oct 07, 2016 1:18:33 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: :/usr/java/packages/lib/i386:/lib:/usr/lib 
Oct 07, 2016 1:18:33 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-127.9.153.1-8080"] 
Oct 07, 2016 1:18:33 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 1763 ms 
Oct 07, 2016 1:18:34 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Oct 07, 2016 1:18:34 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.54 
Oct 07, 2016 1:18:34 PM org.apache.catalina.startup.HostConfig deployWAR 
INFO: Deploying web application archive /var/lib/openshift/57efecb17628e18e59000032/app-root/runtime/dependencies/jbossews/webapps/ROOT.war 
Oct 07, 2016 1:18:47 PM org.apache.catalina.startup.ContextConfig processAnnotationsJar 
SEVERE: Unable to process Jar entry [javassist/ByteArrayClassPath.class] from Jar [jar:jndi:/localhost/WEB-INF/lib/javassist-3.20.0-GA.jar!/] for annotations 
java.io.EOFException 
     at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340) 
     at org.apache.tomcat.util.bcel.classfile.Utility.swallowMethodParameters(Utility.java:796) 
     at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:171) 
     at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:57) 
     at org.apache.tomcat.util.bcel.classfile.Method.<init>(Method.java:71) 
     at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:267) 
     at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:127) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2058) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1934) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1900) 
     at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1885) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1317) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:876) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:374) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 

... partie tego samego wyjątku ...

Oct 07, 2016 1:18:52 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-127.9.153.1-8080"] 
Oct 07, 2016 1:18:52 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 18101 ms 
+0

stacktrack jest podobna do https://bz.apache.org/bugzilla/show_bug.cgi?id=57173 , Czy możesz zweryfikować, że wersja Tomcat to 7.0.56? –

+0

@beckyang to jest wersja serwerowa: Apache Tomcat/7.0.54 – Tomasz

+0

https://github.com/jboss-javassist/javassist/issues/29 również wspomniał o tym błędzie. Proponuję wypróbować rozwiązanie w tym poście. Np .: Uaktualnij Tomcat do wersji 7.0.59 –

Odpowiedz

4

Na razie widzę czterech problemów:

  • Zależność org.javassist

mvn dependency:tree pokazuje

[INFO] \- org.springframework.boot:spring-boot-starter-thymeleaf:jar:1.4.1.RELEASE:compile 
[INFO] +- org.thymeleaf:thymeleaf-spring4:jar:2.1.5.RELEASE:compile 
[INFO] | +- org.thymeleaf:thymeleaf:jar:2.1.5.RELEASE:compile 
[INFO] | | +- ognl:ognl:jar:3.0.8:compile 
[INFO] | | +- org.javassist:javassist:jar:3.20.0-GA:compile (version managed from 3.16.1-GA) 
[INFO] | | \- org.unbescape:unbescape:jar:1.1.0.RELEASE:compile 
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.21:compile 
[INFO] \- nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:jar:1.4.0:compile 
[INFO]  \- org.codehaus.groovy:groovy:jar:2.4.7:compile (version managed from 2.4.3) 

że zależność pochodzi formularz spring-boot-starter-thymeleaf

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.17.1-GA</version> 
</dependency> 

powodu OpenShift Tomcat Processing Annotations Error Deploying War

  • Tomcat wersja

wersja Tomcat można zmienić chociaż właściwości w pom.xml

<properties> 
     <java.version>1.7</java.version> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
     <start-class>com.example.SimpleAppApplication</start-class> 
     <tomcat.version>7.0.54</tomcat.version> 
    </properties> 
  • OpenShift java wersja

Sprawdź, czy istnieje plik markera .openshift/markers/java7 na OpenShift git repo powodu https://developers.openshift.com/servers/tomcat/getting-started.html#other

opcjonalnie można dodać znacznik .openshift/markers/skip_maven_build pominąć maven kompilacji.

  • Ładowanie kontrolerów

Jeśli PagesController.java jest controllers pakietu

@Configuration 
    @EnableAutoConfiguration 
    @ComponentScan("controllers") 
    @RestController 
    public class SimpleAppApplication extends SpringBootServletInitializer { 

     @Override 
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
      return application; 
     } 

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

Myślę, że wersja tomcat zrobiła coś, ponieważ aplikacja działa! Widzę dane wyjściowe strony głównej, ale reszta mapowania nie może być rozwiązana "Nie można zainicjować klasy org.thymeleaf.context.WebVariablesMap' – Tomasz

+0

Edytowałem odpowiedź i teraz powinien działać poprawnie. Udało mi się uruchomić go na moim wystąpieniu OpenShift Tomcat. – akrystian

+0

Pominąłem kilka kroków. Właśnie zmodyfikowałem POM, jak to opisałeś i zadziałało. Bardzo mi przykro, że wszystkie punkty i awanse trafiły do ​​odpowiedzi, które nie pomogły :( – Tomasz

3

Czy próbowali określające rozmieszczenie war na twoim pom.xml?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
     <outputDirectory>target</outputDirectory> 
     <warName>ROOT</warName> 
    </configuration> 
</plugin> 
+0

Próbowałem, ale to nie robi żadnej różnicy. – Tomasz

3

myślę, że po prostu skompilowane w lokalnym środowisku Java 8, jak przez pom a następnie popchnął wojnę openshift bez pom i źródła więc bez odbudować. Spodziewałbym się innego wyjątku, ale to jest moje przypuszczenie. Tomcat 7 na openshift działa domyślnie z Java 6 lub Java 7, jeśli skonfigurowałeś znacznik. Sugeruję, aby dopasować konfigurację lokalną do konfiguracji obecnej na openshift (jdk i tomcat), jeśli nie potrzebujesz nowej funkcji najnowszej wersji. Musisz również zmienić te linie w swoim pliku pom.xml odpowiednią wersją Java.

<properties> 
    <java.version>1.8</java.version> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

UPDATE 1

Spróbuj również jeden z tych rozwiązań wraz z powyższym jednym:

 <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.1.0.Final</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.javassist</groupId> 
       <artifactId>javassist</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

lub edytować catalina.properties plików na dodatek biegów: Tomcat. util.scan.DefaultJarScanner.jarsToSkip = javassist- *.jar

UPDATE 2

widzę masz zależność do javaassist również ze względu thymeleaf, następnie dodać także ten wykluczenia do pom i przełączyć się na java 1.7, ponieważ masz moduł internetową 3.1 (dodać znacznik na openshift, aby go używać java 7)

<properties> 
    <java.version>1.7</java.version> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <start-class>com.example.SimpleAppApplication</start-class> 
</properties> 

nie można wyłączyć javaassist dla thymeleaf, więc jedyną opcją. jest dodanie:

tomcat.util.scan.DefaultJarScanner.jarsToSkip = [existing exclusions] javassist-*.jar 

do catalina.properties w openshift

+0

Masz rację, open shift działa z Java 7, której nie znałem. Jednak wersja projektu changin do wersji Java 7 lub nawet 6 nie pomaga i występuje ten sam wyjątek. – Tomasz

+0

nie pomoże. Jeśli chciałbyś zobaczyć cały przykładowy projekt https://bitbucket.org/Tomekmularczyk/todelete/src/637de418d9a77456ed9a1b1ef08c94769c4febf7?at=master – Tomasz

Powiązane problemy