Original Message:
Sent: 4/13/2023 2:50:00 PM
From: Bradley Downing
Subject: RE: Failing to point existing Maximo (with oracle DB) to MSSQL DB (version 13 Express Edition)
OK cool on the set up of the VM. Totally acceptable set up and common use then for this use case. Check your hosts file to ensure you have good loopback for 127.0.0.1 to localhost and VM machine name. (e.g. MXVM)
Question: can you connect directly to your DB through a SQL tool of choice? If so can you look up the value of the max prop "mxe.db.url"? Is that set? Is it correct? If not then you may want to update that value and set it to the correct jdbc url setting. Then also update your maximo.properties value to match what in fact works from you SQL tool of choice. If you have already done all this please perhaps share you system out.log file?
------------------------------
Bradley K. Downing , MBA
Senior Brand Technical Specialist
IBM
Bakersfield CA
------------------------------
Original Message:
Sent: Wed April 12, 2023 12:45 PM
From: Channa
Subject: Failing to point existing Maximo (with oracle DB) to MSSQL DB (version 13 Express Edition)
Hi Bradley,
Thanks for your reply.
Yes maximo version is 7.6.1.
And this is a Windows VM where everything is at one place (middleware, db). This is basically used for some internal poc.
I had tried with putting proper hostname or ipaddress instead of localhost in maximo.properties.
I even tried with just jdbc url without any other parameter appended to it (like sslprotocal, encrypt etc) and still see same behaviour in all these cases.
All the bat files (configdb, updated, encryptproperties, maxinst) are executed fine connecting to sql db but when I build and deploy the ear into WAS I see the issue. I have tried clearing WAS temp folder.
I also tried with configuring jdbc provider and jdbc resources in WAS to test the sql db connection but I could see same error as well there.
Not pretty sure what I'm missing here.
Original Message:
Sent: 4/12/2023 11:35:00 AM
From: Bradley Downing
Subject: RE: Failing to point existing Maximo (with oracle DB) to MSSQL DB (version 13 Express Edition)
Hello Channa,
I am going to assume this is for some version of Maixmo 7.x correct? If that is correct then, as I observe in the stack trace the JDBC URL jdbc:sqlserver://localhost:1433;databaseName=maxdb76;sslProtocol=TLSv1.2;encrypt=true;trustServerCertificate=true
it appear your current setup is to point to a SQLServer for you DB on the localhost of your middleware server. Is this intentional? (this is not common) Unless you have everything self contained into a single VM Image and are using if for very light use such as sales demonstrations, this is not best practice. If this is the case then you likely have a loopback issue in your hosts file.
It is best practice to name your JDBC server in the maximo.properties file with the fully qualified host name, so even if you are using localhost it would do you well to update this value in your Maximo.properties file, with the correct JDBC host for your SQL DB server. Can you look at these values and update them to your JDBC host name for your SQL Server?
------------------------------
Bradley K. Downing , MBA
Senior Brand Technical Specialist
IBM
Bakersfield CA
Original Message:
Sent: Tue April 11, 2023 01:30 AM
From: Channa
Subject: Failing to point existing Maximo (with oracle DB) to MSSQL DB (version 13 Express Edition)
Hi Everyone,
In one of my Windows VM, i'm trying to connect existing Maximo (with oracle DB) to MSSQL DB (version 13 Express Edition).
I have followed IBM documentation to configure MSSQL server manually.
When I execute Maxinst.bat, Updatedb.bat, configDb.bat, encryptproprties.bat, it gets connected to MSSQL DB fine and executes these commands.
But when I rebuild and deploy the ear into websphere, maximo is failing to connect to DB with "SQL Server did not return a response. The connection has been closed" error.
Any advice, please?
Im using this driver in maximo.properties file.
mxe.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
Here, My Java version is 8 and I have kept all the below jar's in Maximo and Websphere lib folder.
Merlia.jar
mssql-jdbc-6.4.0.jre8.jar
mssql-jdbc-12.2.0.jre8.jar
sqljdbc.jar
sqljdbc42.jar
Error:
[4/11/23 12:47:19:435 CST] 000000a4 SystemOut O 11 Apr 2023 12:47:19:433 [ERROR] [] [] BMXAA6421E - The system could not connect to the JDBC source: jdbc:sqlserver://localhost:1433;databaseName=maxdb76;sslProtocol=TLSv1.2;encrypt=true;trustServerCertificate=trueThe driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:b9256b00-e773-478f-9bba-d938798a080e".
[4/11/23 12:47:19:439 CST] 000000a4 SystemOut O 11 Apr 2023 12:47:19:436 [ERROR] [] [] BMXAA6538E - Failed to initialize MAXIMO business object services.
psdi.util.MXSystemException: access#DBConnectFail
at psdi.server.MXServer.checkMtEnabled(MXServer.java:6395)
at psdi.server.MXServer.start(MXServer.java:3650)
at psdi.servlet.MAXIMOStartupServlet.init(MAXIMOStartupServlet.java:92)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:345)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1369)
at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:640)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:606)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:426)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:171)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:901)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:789)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:427)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:719)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1211)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1390)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:979)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:795)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplicationDynamically(ApplicationMgrImpl.java:1413)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2273)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:436)
at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:379)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:127)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$1.run(CompositionUnitMgrImpl.java:654)
at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5464)
at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5680)
at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:668)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:612)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1303)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:287)
at javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1263)
at java.security.AccessController.doPrivileged(AccessController.java:620)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1257)
at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1096)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:831)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:813)
at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1350)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1243)
at com.ibm.ws.management.application.sync.StartDeploymentTask.startDeployment(StartDeploymentTask.java:249)
at com.ibm.ws.management.application.sync.StartDeploymentTask.fullAppUpdate(StartDeploymentTask.java:121)
at com.ibm.ws.management.application.sync.StartDeploymentTask.performTask(StartDeploymentTask.java:109)
at com.ibm.ws.management.application.sync.AppBinaryProcessor$ExpandApp.expand(AppBinaryProcessor.java:1734)
at com.ibm.ws.management.application.sync.AppBinaryProcessor.postProcessSynchronousExt(AppBinaryProcessor.java:774)
at com.ibm.ws.management.bla.sync.BLABinaryProcessor.postProcess(BLABinaryProcessor.java:599)
at com.ibm.ws.management.bla.sync.BLABinaryProcessor.onChangeCompletion(BLABinaryProcessor.java:476)
at com.ibm.ws.management.bla.sync.BinaryProcessorWrapper.onChangeCompletion(BinaryProcessorWrapper.java:109)
at com.ibm.ws.management.repository.FileRepository.postNotify(FileRepository.java:1938)
at com.ibm.ws.management.repository.FileRepository.update(FileRepository.java:1442)
at com.ibm.ws.management.repository.client.LocalConfigRepositoryClient.update(LocalConfigRepositoryClient.java:189)
at com.ibm.ws.sm.workspace.impl.WorkSpaceMasterRepositoryAdapter.update(WorkSpaceMasterRepositoryAdapter.java:667)
at com.ibm.ws.sm.workspace.impl.RepositoryContextImpl.update(RepositoryContextImpl.java:1998)
at com.ibm.ws.sm.workspace.impl.RepositoryContextImpl.synch(RepositoryContextImpl.java:1946)
at com.ibm.ws.sm.workspace.impl.WorkSpaceImpl.synch(WorkSpaceImpl.java:549)
at com.ibm.ws.console.core.action.SyncWorkSpaceAction.execute(SyncWorkSpaceAction.java:294)
at org.apache.struts.action.RequestProcessor.processActionPerform(Unknown Source)
at org.apache.struts.action.RequestProcessor.process(Unknown Source)
at org.apache.struts.action.ActionServlet.process(Unknown Source)
at org.apache.struts.action.ActionServlet.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at com.ibm.ws.console.core.servlet.WSCUrlFilter.setUpCommandAssistance(WSCUrlFilter.java:967)
at com.ibm.ws.console.core.servlet.WSCUrlFilter.continueStoringTaskState(WSCUrlFilter.java:514)
at com.ibm.ws.console.core.servlet.WSCUrlFilter.doFilter(WSCUrlFilter.java:335)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:949)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:b9256b00-e773-478f-9bba-d938798a080e".
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3937)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1950)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:3456)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:3077)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2919)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1787)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1229)
at java.sql.DriverManager.getConnection(DriverManager.java:675)
at java.sql.DriverManager.getConnection(DriverManager.java:258)
at psdi.util.DBConnect.getConnection(DBConnect.java:100)
at psdi.server.MXServer.checkMtEnabled(MXServer.java:6361)
... 103 more
Caused by: java.io.IOException: SQL Server did not return a response. The connection has been closed. ClientConnectionId:b9256b00-e773-478f-9bba-d938798a080e
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:884)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:938)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:931)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1193)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:1179)
at com.ibm.jsse2.a.a(a.java:79)
at com.ibm.jsse2.a.a(a.java:182)
at com.ibm.jsse2.as.a(as.java:883)
at com.ibm.jsse2.as.i(as.java:969)
at com.ibm.jsse2.as.a(as.java:680)
at com.ibm.jsse2.as.startHandshake(as.java:859)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1839)
------------------------------
Channa
------------------------------