我在openshift上创建了一个Tomcat 7扩展应用程序(使用2个小齿轮),其中包含一个Mysql盒式磁带,我有一个使用git部署到它的WAR文件。
为了处理数据库事务,我总是实现一个ServletContextListener来注释数据源对象,如下所示:
@Resource(名称= “JDBC / MySQLDS”)
私有数据源数据源;
然后在contextInitialized方法:
public void contextInitialized(ServletContextEvent e)
ServletContext context = e.getServletContext();
context.setAttribute( “DS”,数据源);
然后由对象I调用DBHandler使用,而不是管理所有数据库事务。 到目前为止,这对于一个齿轮工作得很好(没有缩放),我甚至不需要更改注释上的任何内容,因为默认情况下,如果你包含一个mysql盒式磁带,总会有一个名为“jdbc / MySQLDS”的资源git repo中的.openshift / context.xml文件。
在缩放应用程序的日志中,我检测到了这一点:
org.apache.catalina.core.StandardContext startInternal
SEVERE:错误listenerStart
严重:由于之前的错误,上下文[/ MyApp]启动失败
如何在扩展应用上实现此功能,而不是让Servlet上下文失败?
答案 0 :(得分:0)
似乎数据源不是问题......应用程序可以连接到Mysql Datasource,并且问题是由HaProxy Cartridge引起的。显然,如果你不在应用程序的根目录中提供任何内容haproxy盒关闭导致503错误。
这个答案帮助我查明了问题: