簡體   English   中英

在Openshift中的tomcat中部署Spring MVC Web應用程序.war文件會導致空白頁

[英]Deploying Spring MVC web app .war file in tomcat in openshift results in blank page

我有一個運行在tomcat上的MySQL數據庫的Spring MVC Web應用程序。 我已經在openshift上配置了Tomcat 7(JBoss EWS 2.0),MySQL 5.5和phpMyAdmin 4.0 然后,按照本教程部署了.war文件。 但是我的.war文件不起作用,我將其重命名為ROOT.war,並且在openshift應用程序的根目錄中向我顯示了一個空白頁。 當我使用一些來自Internet的示例.war文件時( 例如此文件),一切正常。

我也許是問題出在數據庫連接中,所以這就是我在mvc-dipatcher-servlet.xml數據源與OpenShift的環境變量一樣的樣子:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/${OPENSHIFT_APP_NAME}?characterEncoding=UTF-8"/>
    <property name="username" value="${OPENSHIFT_MYSQL_DB_USERNAME}"/>
    <property name="password" value="${OPENSHIFT_MYSQL_DB_PASSWORD}"/>
</bean>

我也嘗試過使用硬編碼版本,但結果相同-非常簡單的空白頁:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/myDatabaseName?characterEncoding=UTF-8"/>
    <property name="username" value="myRootUserName"/>
    <property name="password" value="MyPassword"/>
</bean>

這個問題有解決方案嗎?

更新在@Artur Malinowski的建議下,我運行了rhc tail - a <appname>命令:這是我得到的:

DL is deprecated, please use Fiddle
==> app-root/logs/jbossews.log <==
Dec 30, 2014 7:06:06 AM org.apache.catalina.loader.WebappClassLoader clearRefere
ncesJdbc
SEVERE: The web application [/quiz] registered the JDBC driver [com.mysql.jdbc.D
river] but failed to unregister it when the web application was stopped. To prev
ent a memory leak, the JDBC Driver has been forcibly unregistered.
Dec 30, 2014 7:06:06 AM org.apache.catalina.loader.WebappClassLoader clearRefere
ncesThreads
SEVERE: The web application [/quiz] appears to have started a thread named [Aban
doned connection cleanup thread] but has failed to stop it. This is very likely
to create a memory leak.
Dec 30, 2014 7:06:06 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /var/lib/openshift/54a274c6e0b8cd33d
10000a4/app-root/runtime/dependencies/jbossews/webapps/quiz.war has finished in
15,066 ms
Dec 30, 2014 7:06:06 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-127.4.37.1-8080"]
Dec 30, 2014 7:06:06 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 15415 ms

==> app-root/logs/phpmyadmin.log <==
[Tue Dec 30 07:03:35 2014] [notice] caught SIGWINCH, shutting down gracefully
- - - [30/Dec/2014:07:03:35 -0500] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.2.15
 (Red Hat) (internal dummy connection)"
[Tue Dec 30 07:04:06 2014] [notice] SELinux policy enabled; httpd running as con
text unconfined_u:system_r:openshift_t:s0:c2,c79
[Tue Dec 30 07:04:06 2014] [notice] Digest: generating secret for digest authent
ication ...
[Tue Dec 30 07:04:06 2014] [notice] Digest: done
[Tue Dec 30 07:04:06 2014] [notice] Apache/2.2.15 (Unix) PHP/5.3.3 configured --
 resuming normal operations
[Tue Dec 30 07:05:31 2014] [notice] SIGHUP received.  Attempting to restart
[Tue Dec 30 07:05:32 2014] [notice] Digest: generating secret for digest authent
ication ...
[Tue Dec 30 07:05:32 2014] [notice] Digest: done
[Tue Dec 30 07:05:32 2014] [notice] Apache/2.2.15 (Unix) PHP/5.3.3 configured --
 resuming normal operations

==> app-root/logs/mysql.log <==
141230  7:05:12 InnoDB: highest supported file format is Barracuda.
141230  7:05:13  InnoDB: Waiting for the background threads to start
141230  7:05:14 InnoDB: 5.5.40 started; log sequence number 1755443
141230  7:05:14 [Note] Server hostname (bind-address): '127.4.37.2'; port: 3306
141230  7:05:14 [Note]   - '127.4.37.2' resolves to '127.4.37.2';
141230  7:05:14 [Note] Server socket created on IP: '127.4.37.2'.
141230  7:05:14 [Warning] 'proxies_priv' entry '@ root@ex-std-node501.prod.rhclo
ud.com' ignored in --skip-name-resolve mode.
141230  7:05:14 [Note] Event Scheduler: Loaded 0 events
141230  7:05:14 [Note] /opt/rh/mysql55/root/usr/libexec/mysqld: ready for connec
tions.
Version: '5.5.40'  socket: '/var/lib/openshift/54a274c6e0b8cd33d10000a4/mysql//s
ocket/mysql.sock'  port: 3306  MySQL Community Server (GPL)

最后,我解決了這里實際提到的問題。 我已經借助這個答案解決了這個問題 這是我的實現:

我在我的web.xml添加了一個listener-class

<listener>
    <listener-class>
        az.quiz.utils.MyServletContext
    </listener-class>
</listener>

並添加了偵聽器類:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

public class MyServletContext implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Context created");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

        Enumeration<Driver> drivers = DriverManager.getDrivers();
        while (drivers.hasMoreElements()) {
            Driver driver = drivers.nextElement();
            try {
                DriverManager.deregisterDriver(driver);
                System.out.println(String.format("deregistering jdbc driver: %s", driver));
            } catch (SQLException e) {
                System.out.println(String.format("Error deregistering driver %s", driver));
            }

        }
        System.out.println("Context destroyed");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM