【问题标题】:the program works in windows server 2008 r2 but does not work in windows server 2012 r2该程序在 windows server 2008 r2 中有效,但在 windows server 2012 r2 中无效
【发布时间】:2017-07-13 09:03:46
【问题描述】:

(请注意:如果不适合在这里发帖,请管理员帮忙删除。谢谢)

背景:在 windows server 2008 r2 的 tomcat 8 上部署了一个应用程序。当前服务器正在运行,应用程序运行正常。团队负责人告诉我们,该应用程序是由两年前已经辞职的程序员编写的。该程序在程序员辞职后没有任何代码更改。

由于某些原因,我们必须将 windows server 2008 r2 更改(升级)为 windows server 2012 r2。

该应用程序需要 java 1.7 和 tomcat 8 才能运行,因此我们在 windows server 2012 r2 中安装了这些软件。

我们从 windows server 2008 r2 复制 war 文件并粘贴到 windows server 2012 r2 中。复制粘贴war文件后,在tomcat web应用管理器中部署war文件(windows server 2008 r2中的操作相同)。

一旦我们部署了 war 文件,我们就会尝试启动应用程序。但是,当我们单击“开始”按钮时,我们稍等片刻,tomcat 消息显示“FAIL - Application at context path/path-name could not be started”。

我们检查了软件版本,和windows server 2008 r2一样。

我们对该消息感到困惑,因为 war 文件在 windows server 2008 r2 中工作。

我们检查 localhost.2017-07-13.log 文件,我们注意到有一些异常。我们想在这里发布日志的内容。

13-Jul-2017 15:00:42.464 INFO [http-nio-8080-exec-8] 
org.apache.catalina.core.ApplicationContext.log Initializing Spring root 
WebApplicationContext
13-Jul-2017 15:00:43.214 SEVERE [http-nio-8080-exec-8] 
org.apache.catalina.core.StandardContext.listenerStart Exception sending 
context initialized event to listener instance of class 
org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'dataSource' defined in ServletContext resource [/WEB-
INF/applicationContext.xml]: Error setting property values; nested exception 
is org.springframework.beans.PropertyBatchUpdateException; nested 
PropertyAccessExceptions (1) are:
PropertyAccessException 1: 
org.springframework.beans.MethodInvocationException: Property 
'driverClassName' threw exception; nested exception is 
java.lang.IllegalStateException: Could not load JDBC driver class 
[net.sourceforge.jtds.jdbc.Driver]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.app
lyPropertyValues(AbstractAutowireCapableBeanFactory.java:1279)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.pop
ulateBean(AbstractAutowireCapableBeanFactory.java:1010)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doC
reateBean(AbstractAutowireCapableBeanFactory.java:472)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.r
un(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.cre
ateBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(Abstra
ctBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingle
ton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abstract
BeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBe
anFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBe
anFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstanti
ateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactory
Initialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractA
pplicationContext.java:380)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(Contex
tLoader.java:244)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextL
oader.java:187)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(Context
LoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4729
)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167
)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:466)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1460)
at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:289)
at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:210)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested 
PropertyAccessExceptions (1) are:
PropertyAccessException 1: 
org.springframework.beans.MethodInvocationException: Property 
'driverClassName' threw exception; nested exception is 
java.lang.IllegalStateException: Could not load JDBC driver class 
[net.sourceforge.jtds.jdbc.Driver]
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPro
pertyAccessor.java:104)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPro
pertyAccessor.java:59)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.app
lyPropertyValues(AbstractAutowireCapableBeanFactory.java:1276)
... 64 more

我们不明白为什么程序在 windows server 2008 r2 中可以运行,但在 windows server 2012 r2 中却不能运行?

目前我们还在寻找程序的源代码,但是从日志文件中,它提到了[/WEB-INF/applicationContext.xml]和[net.sourceforge.jtds.jdbc.Driver],我们猜测是什么时候获取源代码,我们需要找到xml文件和驱动,对吗?

感谢您的建议。谢谢。

编辑

我们刚刚找到源代码,我们打开 applicationContext.xml 并且有一个用于 net.sourceforge.jtds.jdbc.Driver 的 bean。不知道为什么它在 windows server 2012 r2 中不起作用。

代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
                        http://www.springframework.org/schema/aop
                        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                        http://www.springframework.org/schema/jee
                        http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />


    <property name="url" value="jdbc:jtds:sqlserver://{host}:1433;DatabaseName=myDB" /> 

    <property name="username" value="user" />
    <property name="password" value="Password" />
</bean>

</beans>

【问题讨论】:

  • 你为什么用 SQL 服务器标签标记问题 reguardin win server 2008 /2012?
  • @sepupic,感谢您的评论。我们更新了帖子的标签。
  • 还是 sql server 而不是 windows server
  • @sepupic,很抱歉造成粗心的错误,标签已更新
  • 我们刚刚找到源代码,我们打开applicationContext.xml(在日志文件中提到),有一个bean为net.sourceforge.jtds.jdbc.Driver。不知道为什么它在 widows server 2012 r2 中不起作用。

标签: java tomcat windows-server-2008-r2 windows-server-2012-r2


【解决方案1】:

你说(强调我的)

应用程序需要 java 1.7 和 tomcat 8 才能运行,所以我们安装了 windows server 2012 r2中的那些软件。

我们从 windows server 2008 r2 复制 war 文件并粘贴到 windows 服务器 2012 r2。复制粘贴war文件后,我们部署war Tomcat Web 应用程序管理器中的文件(Windows 中的相同操作) 服务器 2008 r2)。

错误信息说

java.lang.IllegalStateException:无法加载 JDBC 驱动程序类 [net.sourceforge.jtds.jdbc.Driver]

意味着:您没有充分复制原始实现。由于您可能会错过的不仅仅是这个驱动程序(它可能是第一个失败的驱动程序),我建议对两个目录进行完整的差异。弄清楚两个安装中部署了什么。

提示:Tomcat 在其 lib 目录中有一个全局类路径,其中包含每个 webapp 都可以使用的代码。

【讨论】:

  • 您好@Olaf Kock,感谢您的回答。我和我的同事从 windows server 2008 r2 中提取了 war 文件,然后我们使用 WinMerge 软件来查找差异。那些文件是一样的。没有丢失或没有额外的文件。关于Tomcat的全局类路径,我们比较一下,但lib是一样的。我们仍然不确定为什么war文件不起作用,但是当我们将jtsd jar放入lib并再次创建war并部署在Tomcat上时。该应用程序现在正在运行。
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 2019-04-25
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多