2016-10-01 2 views
6

Datei Ich habe eine .war Datei, die wenn ich in webapps Ordner in meiner lokalen Instanz von Tomcat 9 kopieren dann wird es erfolgreich implementiert. Irgendwie, wenn ich versuche, es auf OpenShift-Ausrüstung (Tomcat 7) zu laufen, wird es nicht entfaltet. Schritte, die ich mache:Kann einfache Spring Boot Web App auf OpenShift

0: Ich klonen das Remote-Repository.

1: Ich kopiere die WAR-Datei in den Webapps-Ordner im Git-Repository.

2: Ich schiebe es auf Remote-Repo und ich bekomme Ausgabe:

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 
  • Im Repo eine .pom Datei und Ordner src war, die ich gelöscht.

Projekt pom:

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

Haupt 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; 

} 

Root-Controller:

@RestController 
public class MainController { 


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

} 

EDIT I Serverprotokolle überprüft und ich viele dieser erhalten Geben Sie äh 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 protokolliert **

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) 

... viele der gleichen Ausnahme ...

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

Die stacktrack ähnelt https://bz.apache.org/bugzilla/show_bug.cgi?id=57173 , Können Sie überprüfen, ob die Tomcat-Version 7.0.56 ist? –

+0

@beckyang es ist Server-Version: Apache Tomcat/7.0.54 – Tomasz

+0

https://github.com/jboss-javassist/javassist/issues/29 erwähnte diesen Fehler auch. Ich schlage vor, Sie versuchen die Lösung in diesem Beitrag. Beispiel: Upgrate Tomcat auf 7.0.59 –

Antwort

4

Vorerst vier Probleme sehen:

  • Abhängigkeit org.javassist

mvn dependency:tree zeigt

[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) 

dass Abhängigkeit kommt Form 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> 

aufgrund OpenShift Tomcat Processing Annotations Error Deploying War

  • Tomcat Version

Tomcat Version obwohl Eigenschaften in pom.xml geändert werden könnten

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

Überprüfen Sie, ob existieren Marker Datei .openshift/markers/java7 auf Openshift git Repo aufgrund https://developers.openshift.com/servers/tomcat/getting-started.html#other

optional können Sie Marker hinzufügen .openshift/markers/skip_maven_build Maven build zu überspringen.

  • Laden-Controller

Wenn PagesController.java auf controllers Paket

@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

Ich denke specfyfing Tomcat Version hat sein Ding, weil App läuft! Ich kann die Ausgabe einer Wurzelseite sehen, aber der Rest von Thymeleaf-Mappings kann nicht aufgelöst werden. 'Konnte die Klasse org.thymeleaf.context.WebVariablesMap' nicht initialisieren. – Tomasz

+0

Ich habe die Antwort bearbeitet und sollte nun korrekt funktionieren. Ich habe es auf meiner Instanz von OpenShift Tomcat ausgeführt. – akrystian

+0

Ich überspringe einige Schritte. Ich habe POM so modifiziert, wie Sie beschrieben haben und es hat funktioniert. Es tut mir so leid, dass alle Punkte und Upvotes nach Antworten gingen, die keine Hilfe boten :( – Tomasz

3

Haben Sie Kriegseinsatz versucht Angabe auf Ihrem 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

Versucht es, aber das macht keinen Unterschied. – Tomasz

3

Ich glaube, Sie einfach in Ihrer lokalen Umgebung in Java 8 wie von Ihrem pom zusammengestellt und schob dann den Krieg gegen den Openshift ohne pom und Quelle so ohne wieder aufzubauen. Ich hätte eine andere Ausnahme erwartet, aber das ist meine Vermutung. Tomcat 7 bei OpenShift wird standardmäßig mit Java 6 oder Java 7 ausgeführt, wenn Sie den Marker konfigurieren. Ich empfehle Ihnen, Ihre lokale Konfiguration an die auf openShift (jdk und tomcat) anzupassen, wenn Sie die neue Funktion der neuesten Version nicht benötigen. Sie müssen diese Zeilen auch in Ihrer pom.xml mit der richtigen Java-Version ändern.

<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

Bitte versuchen Sie auch eine dieser Lösungen zusammen mit dem oben ein:

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

oder der Datei catalina.properties auf dem Gang Add bearbeiten: Kater. util.scan.DefaultJarScanner.jarsToSkip = javassist- *.

jar

UPDATE 2

Ich sehe Sie eine Abhängigkeit haben auch aufgrund thymeleaf javaassist, dann fügen auch diesen Ausschluss zu Ihrem pom und wechseln Sie in Java 1.7, weil Sie einen Marker ein Web-Modul 3.1 (Add haben auf openshift, damit er java benutzt 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> 

kann man javaassist für thymeleaf nicht ausschließen so die einzige option. ist hinzuzufügen:

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

zu catalina.properties in Openshift

+0

Sie haben Recht, offene Schaltung läuft Java 7, die ich nicht kannte. Die Changing-Projektversion zu Java 7 oder sogar 6 hilft jedoch nicht und die gleiche Ausnahme tritt auf. – Tomasz

+0

hilft nicht. Wenn Sie möchten, dass das gesamte Beispielprojekt https://bitbucket.org/Tomekularczyk/todelete/src/637de418d9a77456ed9a1b1ef08c94769c4febf7?at=master – Tomasz

Verwandte Themen