在嵌入了玻璃鱼的Heroku上运行Java App

时间:2020-10-23 10:12:39

标签: java mysql maven heroku glassfish-embedded

这是我关于Stackoverflow的第一篇文章。我是JAVA开发的初学者。我的项目正在本地服务器上运行glassfish,但我想使用嵌入了glassfish的项目将其部署在heroku上。尝试订阅新用户(与DB通信)时出现此错误。我不知道该如何更改才能修复它。对不起,我的英语不好。

HTTP Status 500 - Internal Server Error
type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception

javax.ejb.EJBException
note The full stack traces of the exception and its root causes are available in the Undefined Product Name - define product and version info in config/branding 0.0.0 logs.
Undefined Product Name - define product and version info in config/branding 0.0.0

请附上我的:

[glassfish-resources.xml]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
    <jdbc-connection-pool datasource-classname="com.jolbox.bonecp.BoneCPDataSource" name="BoneCpPoolTP" res-type="javax.sql.DataSource" transaction-isolation-level="read-committed" is-isolation-level-guaranteed="true" steady-pool-size="1" max-pool-size="20">
      <property name="databaseName" value="heroku_a7c39aa98a99b33"></property>
      <property name="Password" value="794817ce"></property>
      <property name="serverName" value="glassfish-embedded-all 5.1.0"></property>
      <property name="User" value="b3a3555ee6337d"></property>
      <property name="portNumber" value="3306"></property>
      <property name="URL" value="jdbc:mysql://eu-cdbr-west-03.cleardb.net:3306/heroku_a7c39aa98a99b33"></property>
      <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 
      <property name="host" value="eu-cdbr-west-03.cleardb.net"></property>
        <property name="minConnectionsPerPartition" value="1"/>
        <property name="maxConnectionsPerPartition" value="20"/>
        <property name="acquireIncrement" value="2"/>
        <property name="partitionCount" value="1"/>
        <property name="idleMaxAgeInMinutes" value="60"/>
        <property name="idleMaxAgeInSeconds" value="3600"/>
        <property name="connectionTestStatement" value="/* ping *\/ SELECT 1"/>
        <property name="statementsCacheSize" value="0"/>
        <property name="releaseHelperThreads" value="3"/>
        <property name="closeConnectionWatch" value="false"/>
        <property name="logStatementsEnabled" value="false"/>
        <property name="acquireRetryDelayInMs" value="7000"/>
        <property name="lazyInit" value="false"/>
        <property name="transactionRecoveryEnabled" value="false"/>
        <property name="acquireRetryAttempts" value="5"/>
        <property name="disableJMX" value="false"/>
        <property name="queryExecuteTimeLimitInMs" value="0"/>
        <property name="poolAvailabilityThreshold" value="20"/>
        <property name="disableConnectionTracking" value="false"/>
        <property name="connectionTimeoutInMs" value="0"/>
        <property name="closeConnectionWatchTimeoutInMs" value="0"/>
        <property name="statementReleaseHelperThreads" value="0"/>
        <property name="maxConnectionAgeInSeconds" value="0"/>
        <property name="statisticsEnabled" value="false"/>
        <property name="externalAuth" value="false"/>
        <property name="deregisterDriverOnClose" value="false"/>   
    </jdbc-connection-pool>
    <jdbc-resource enabled="true" object-type="user" pool-name="BoneCpPoolTP" jndi-name="java:app/jdbc/bonecp_macommande_tp"></jdbc-resource>
</resources>

[startup.main.java]

package com.sdzee.tp.startup;

import java.io.File;

import org.glassfish.embeddable.Deployer;
import org.glassfish.embeddable.GlassFish;
import org.glassfish.embeddable.GlassFishProperties;
import org.glassfish.embeddable.GlassFishRuntime;
import org.glassfish.embeddable.archive.ScatteredArchive;

    public class Main {

        public static void main(String[] args) throws Exception {
            
            String port = System.getenv("PORT");
            port = port != null ? port : "8080";
            GlassFishProperties gfProps = new GlassFishProperties();
            gfProps.setPort("http-listener", Integer.parseInt(port));
            
            GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(gfProps);
            glassfish.start();
            
            File webRoot = new File("src/main/webapp");
            File classRoot = new File("target", "classes"); 

            Deployer deployer = glassfish.getDeployer();
            ScatteredArchive archive = new ScatteredArchive("hello", ScatteredArchive.Type.WAR, webRoot);
            archive.addClassPath(classRoot);
            deployer.deploy(archive.toURI(), "--name=hello", "--contextroot=/");
         
           
        /*  File file = new File("tp10-0.0.1-SNAPSHOT.war");
            deployer.deploy(file); */           
         }      
}

[persistence.xml]

    <?xml version="1.0" encoding="UTF-8"?>
 <persistence version="2.1" xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
 http://java.sun.com/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="ma_commande_PU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>java:app/jdbc/bonecp_macommande_tp</jta-data-source>        
        <class>com.sdzee.tp.entities.Client</class>
        <class>com.sdzee.tp.entities.Commande</class>
        <class>com.sdzee.tp.entities.Utilisateur</class>             
   <!-- <properties>        
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://eu-cdbr-west-03.cleardb.net:3306/heroku_a7c39aa98a99b33?reconnect=true&amp;useSSL=false&amp;createDatabaseIfNotExist=true&amp;useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC" />
            <property name="javax.persistence.jdbc.user" value="b3a3555ee6337d" />
            <property name="javax.persistence.jdbc.password" value="794817ce" />            
            <property name="eclipselink.deploy-on-startup" value="true"/>
            <property name="eclipselink.target-database" value="MySQL"/>           
        </properties>
    -->
    </persistence-unit>
</persistence>

[pom.xml]

<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.sdzee.tp</groupId>
  <artifactId>tp10</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>tp10</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
  
        <!-- https://mvnrepository.com/artifact/javax.ejb/javax.ejb-api -->
       <dependency>
             <groupId>javax.ejb</groupId>
             <artifactId>javax.ejb-api</artifactId>
              <version>3.2</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
       <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
             <version>3.0.1</version>
             <scope>provided</scope>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence -->
       <dependency>
             <groupId>org.eclipse.persistence</groupId>
             <artifactId>javax.persistence</artifactId>
             <version>2.1.1</version>
       </dependency>
          
       <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
       <dependency>
              <groupId>joda-time</groupId>
              <artifactId>joda-time</artifactId>
              <version>2.4</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
       <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
             <version>1.1.1</version>
       </dependency>       
       
       <!-- https://mvnrepository.com/artifact/joda-time/joda-time-jsptags -->
       <dependency>
              <groupId>joda-time</groupId>
              <artifactId>joda-time-jsptags</artifactId>
              <version>1.1.1</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/org.jasypt/jasypt -->
       <dependency>
              <groupId>org.jasypt</groupId>
              <artifactId>jasypt</artifactId>
              <version>1.9.0</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
       <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jstl</artifactId>
              <version>1.2</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/eu.medsea.mimeutil/mime-util -->
       <dependency>
              <groupId>eu.medsea.mimeutil</groupId>
              <artifactId>mime-util</artifactId>
              <version>2.1.3</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
       <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>8.0.20</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
       <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-api</artifactId>
              <version>1.6.6</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
       <dependency>
              <groupId>com.google.guava</groupId>
              <artifactId>guava</artifactId>
              <version>13.0.1</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/com.jolbox/bonecp -->
       <dependency>
             <groupId>com.jolbox</groupId>
             <artifactId>bonecp</artifactId>
             <version>0.8.0.RELEASE</version>
       </dependency>      
         
       <!-- Glassfish embedded pour exécuter l'application web -->    
       <dependency>
            <groupId>org.glassfish.main.extras</groupId>
            <artifactId>glassfish-embedded-all</artifactId>
            <version>5.1.0</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/javax/javaee-web-api -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
           
              <!-- dependencies Heroku   -->
        <dependency>
            <groupId>com.sparkjava</groupId>
            <artifactId>spark-core</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>com.sparkjava</groupId>
            <artifactId>spark-template-freemarker</artifactId>
            <version>2.0.0</version>
        </dependency>
        
        <dependency>
            <groupId>com.heroku.sdk</groupId>
            <artifactId>heroku-jdbc</artifactId>
            <version>0.1.1</version>
        </dependency>       
  </dependencies>
  
  
  <build>
        <plugins>
        
           <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
                 <version>3.0.0</version>
           </plugin> 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>    
            </plugin>
            <!-- Un plugin pour générer automatiquement le script de démarrage de l'application -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>2.1.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                        <configuration>
                            <assembleDirectory>target</assembleDirectory>
                            <programs>
                            <!-- La classe Main exécute le serveur glassfish embedded, et y déploie l'application -->
                                <program>
                                    <mainClass>com.sdzee.tp.startup.Main</mainClass>
                                    <id>startup</id>
                                </program>
                            </programs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  
</project>

谢谢

0 个答案:

没有答案