这个我打败了我,我在 Stack Overflow 和其他地方查看了很多其他帖子/问题,并与一些也不知道原因的 IBM 员工交谈过。
我已经按照 v7.0 知识中心“MobileFirst Server 基本安装教程”(使用 DB2 作为数据库)中的说明在 VM 中设置了 MobileFirst Platform Server。我已经完成了每一步,但在第 9 步,操作控制台实际上并没有像我预期的那样显示运行时。这意味着我无法部署适配器等以便能够在物理设备上正确测试应用程序。(最终这个 VM 将公开 IP,因此我们可以在任何 Internet 连接上使用/演示该应用程序)。
部署到服务器的应用程序中心等工作正常,我已经能够将我的手机和平板电脑连接到它以下载部署的 APK 并正常安装它们。只是这个运行时问题不起作用。
日志中有一些消息,根据我的研究,这些消息表明可以忽略的错误,或者已经在 6.3 中修复。我希望有人能够阐明导致问题的原因,这正在驱使我们中的一些人发疯。我们认为这可能与 JMX 或 SSLSocket 错误有关,但实际上无法找出确切的原因或如何纠正它(因为我们根本没有使用我们所知道的 ssl)。
服务器配置工具截图 http://www.files.interestingmix.com.au/stack/mfps_servconf_runtime.png
操作控制台的屏幕截图 http://www.files.interestingmix.com.au/stack/mfps_opscons_noruntime.png
(以下服务器日志在“服务器启动 simpleserver”操作之前被清理)
从messages.log中提取
E FWLSE0320E: Failed to check whether the admin services are ready. Caused by: [project worklight]
java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
at javax.net.ssl.DefaultSSLSocketFactory.a(SSLSocketFactory.java:2)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:9)
at com.ibm.net.ssl.www2.protocol.https.c.createSocket(c.java:145)
at sun.net.NetworkClient.doConnect(NetworkClient.java:174)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:407)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:502)
at com.ibm.net.ssl.www2.protocol.https.c.<init>(c.java:103)
at com.ibm.net.ssl.www2.protocol.https.c.a(c.java:25)
at com.ibm.net.ssl.www2.protocol.https.d.getNewHttpClient(d.java:20)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:943)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:11)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1311)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:479)
at com.ibm.net.ssl.www2.protocol.https.b.getResponseCode(b.java:63)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.loadJMXServerInfo(RESTMBeanServerConnection.java:240)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.<init>(RESTMBeanServerConnection.java:161)
at com.ibm.ws.jmx.connector.client.rest.internal.Connector.connect(Connector.java:371)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:278)
at com.worklight.common.util.jmx.LibertyRuntimeMBeanHandler.getMBeanServerConnection(LibertyRuntimeMBeanHandler.java:84)
at com.worklight.common.util.jmx.MBeanConnectorFactory.getLocalMBeanProxy(MBeanConnectorFactory.java:139)
at com.worklight.core.jmx.ProjectSynchronizationBean.isReady(ProjectSynchronizationBean.java:126)
at com.worklight.core.init.WorklightServletInitializer$1.run(WorklightServletInitializer.java:140)
at java.lang.Thread.run(Thread.java:780)
Caused by: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
at javax.net.ssl.SSLJsseUtil.b(SSLJsseUtil.java:147)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:8)
at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:3)
at javax.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:19)
at com.ibm.net.ssl.www2.protocol.https.b.<init>(b.java:94)
at com.ibm.net.ssl.www2.protocol.https.Handler.openConnection(Handler.java:3)
at com.ibm.net.ssl.www2.protocol.https.Handler.openConnection(Handler.java:8)
at java.net.URL.openConnection(URL.java:983)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.getBasicConnection(RESTMBeanServerConnection.java:1835)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.getConnection(RESTMBeanServerConnection.java:1923)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.getConnection(RESTMBeanServerConnection.java:1896)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.getConnection(RESTMBeanServerConnection.java:1892)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.loadJMXServerInfo(RESTMBeanServerConnection.java:231)
at com.ibm.ws.jmx.connector.client.rest.internal.RESTMBeanServerConnection.<init>(RESTMBeanServerConnection.java:155)
at com.ibm.ws.jmx.connector.client.rest.internal.Connector.connect(Connector.java:371)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:278)
at com.worklight.common.util.jmx.LibertyRuntimeMBeanHandler.getMBeanServerConnection(LibertyRuntimeMBeanHandler.java:84)
at com.worklight.common.util.jmx.MBeanConnectorFactory.getLocalMBeanProxy(MBeanConnectorFactory.java:139)
at com.worklight.core.jmx.ProjectSynchronizationBean.isReady(ProjectSynchronizationBean.java:126)
at com.worklight.core.init.WorklightServletInitializer.initialize(WorklightServletInitializer.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:613)
at com.worklight.server.bundle.project.JeeProjectActivator$1.run(JeeProjectActivator.java:227)
at com.worklight.server.bundle.project.JeeProjectActivator.contextInitialized(JeeProjectActivator.java:268)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2374)
at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:1044)
at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:6342)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApp(DynamicVirtualHost.java:446)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApplication(DynamicVirtualHost.java:441)
at com.ibm.ws.webcontainer.osgi.WebContainer.startWebApplication(WebContainer.java:761)
at com.ibm.ws.webcontainer.osgi.WebContainer.startModule(WebContainer.java:739)
at com.ibm.ws.app.manager.web.internal.WebModuleHandlerImpl.deployModule(WebModuleHandlerImpl.java:106)
at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployModule(DeployedAppInfoBase.java:538)
at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployModules(DeployedAppInfoBase.java:457)
at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployApp(DeployedAppInfoBase.java:411)
at com.ibm.ws.app.manager.war.internal.WARApplicationHandlerImpl.install(WARApplicationHandlerImpl.java:73)
at com.ibm.ws.app.manager.internal.statemachine.StartAction.execute(StartAction.java:139)
at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.enterState(ApplicationStateMachineImpl.java:1166)
at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.run(ApplicationStateMachineImpl.java:779)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:626)
... 1 more
[3/26/15 14:20:44:058 EST] 00000045 SystemErr R Exception in thread "Initialization thread for Worklight runtime worklight"
[3/26/15 14:20:44:058 EST] 00000045 SystemErr R java.lang.RuntimeException: Timeout while waiting for the management service to start up.120 secs.
[3/26/15 14:20:44:060 EST] 00000045 SystemErr R at com.worklight.core.init.WorklightServletInitializer$1.run(WorklightServletInitializer.java:144)
[3/26/15 14:20:44:061 EST] 00000045 SystemErr R at java.lang.Thread.run(Thread.java:780)
[3/26/15 14:22:45:591 EST] 0000004d com.ibm.worklight.admin.common.util.ContextPropertyUtil I Resource conf/jndi/default.properties not found. This is not an error. Context path is /worklightconsole
[3/26/15 14:22:46:078 EST] 0000005a SystemErr R 249960 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-32] openjpa.Runtime - Starting OpenJPA 1.2.2
[3/26/15 14:22:46:084 EST] 0000005a SystemErr R 249966 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-32] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DB2Dictionary" (DB2/LINUXX8664 SQL10053 ,IBM Data Server Driver for JDBC and SQLJ 4.17.29).
[3/26/15 14:22:46:182 EST] 0000005a com.worklight.common.util.jmx.LibertyRuntimeMBeanHandler I Establishing REST connection to service:jmx:rest://localhost:9443/IBMJMXConnectorREST
[3/26/15 14:22:46:189 EST] 0000005a com.ibm.worklight.admin.services.RuntimeService E Failed to obtain JMX connection to access an MBean.
There might be a JMX configuration error: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
[3/26/15 14:22:46:607 EST] 0000005a com.ibm.worklight.admin.services.RuntimeService W No running mxbeans found
从 console.log 中提取
[AUDIT ] CWWKF0011I: The server simpleServer is ready to run a smarter planet.
[err] dataBaseFromDataSource=true
[err] dataBaseUrl=jdbc:db2://mobilefirstdev7.local.com:50000/APPCNTR
[err] dataBaseDriver=IBM Data Server Driver for JDBC and SQLJ
[err] dataBaseDriverVersion=4.17
[err] dataBaseProduct=DB2/LINUXX8664
[err] dataBaseVersion=SQL10053
[err] dataBaseUser=db2inst1
[err] 153 appcenterdb-db2 INFO [LargeThreadPool-thread-14] openjpa.Runtime - Starting OpenJPA 1.2.2
[err] 360 appcenterdb-db2 INFO [LargeThreadPool-thread-14] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DB2Dictionary" (DB2/LINUXX8664 SQL10053 ,IBM Data Server Driver for JDBC and SQLJ 4.17.29).
[err] 376 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-15] openjpa.Runtime - Starting OpenJPA 1.2.2
[err] 34 WorklightPU WARN [LargeThreadPool-thread-16] openjpa.Runtime - An error occurred while registering a ClassTransformer with PersistenceUnitInfo: name 'WorklightPU', root URL [file:/opt/IBM/WebSphere/Liberty/usr/shared/resources/worklight/lib/worklight-jee-library.jar]. The error has been consumed. To see it, set your openjpa.Runtime log level to TRACE. Load-time class transformation will not be available.
[err] 1 WorklightReportsPU WARN [LargeThreadPool-thread-16] openjpa.Runtime - An error occurred while registering a ClassTransformer with PersistenceUnitInfo: name 'WorklightReportsPU', root URL [file:/opt/IBM/WebSphere/Liberty/usr/shared/resources/worklight/lib/worklight-jee-library.jar]. The error has been consumed. To see it, set your openjpa.Runtime log level to TRACE. Load-time class transformation will not be available.
[err] 731 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-15] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DB2Dictionary" (DB2/LINUXX8664 SQL10053 ,IBM Data Server Driver for JDBC and SQLJ 4.17.29).
[err] 2699 WorklightPU INFO [LargeThreadPool-thread-16] openjpa.Runtime - Starting OpenJPA 1.2.2
[err] 2861 WorklightPU INFO [LargeThreadPool-thread-16] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DB2Dictionary".
[err] 3567 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-15] openjpa.Runtime - Though you are using optimistic transactions, OpenJPA is now beginning a datastore transaction because you have requested a lock on some data.
[AUDIT ] CWWKZ0001I: Application wladmin started in 38.705 seconds.
[AUDIT ] CWWKZ0001I: Application applicationcenter started in 39.095 seconds.
[AUDIT ] CWWKZ0001I: Application worklight started in 41.892 seconds.
[ERROR ] FWLSE0320E: Failed to check whether the admin services are ready. Caused by: [project worklight]
java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
[err] Exception in thread "Initialization thread for Worklight runtime worklight"
[err] java.lang.RuntimeException: Timeout while waiting for the management service to start up.120 secs.
[err] at com.worklight.core.init.WorklightServletInitializer$1.run(WorklightServletInitializer.java:144)
[err] at java.lang.Thread.run(Thread.java:780)
[err] 249960 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-32] openjpa.Runtime - Starting OpenJPA 1.2.2
[err] 249966 WorklightManagementPU-db2 INFO [LargeThreadPool-thread-32] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DB2Dictionary" (DB2/LINUXX8664 SQL10053 ,IBM Data Server Driver for JDBC and SQLJ 4.17.29).
[ERROR ] Failed to obtain JMX connection to access an MBean.
There might be a JMX configuration error: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
[WARNING ] No running mxbeans found