0

This one has me beat, I've looked around at a lot of other posts/questions both on Stack Overflow and elsewhere, as well as spoken to some IBMers who don't know the cause either.

I have set up a MobileFirst Platform Server in a VM as per the instructions in the knowledge centre for v7.0 "Tutorial for a basic installation of MobileFirst Server" (using DB2 as the Database). I have followed every step, yet at step #9, the Operations Console does not actually show the runtime as I would expect. This means I am unable to deploy the adapters etc. to be able to test the app properly on a physical device. (Eventually this VM will have public IP exposure so we can use/demo the application on any internet connection).

The application Center etc. deployed to the server is working fine and I have been able to connect my phone and tablet to it to download the deployed APKs and install them fine. It's just this runtime issue that's not working.

There are a few messages in the logs, that based on my research indicate errors that can either be ignored, or that were already fixed in 6.3. I'd love for someone to be able to shed some light on what's causing the issue, this is driving a few of us bananas. We believe it may be something to do with a JMX or SSLSocket error but cannot actually figure out the exact cause or how to rectify it (as we're not using ssl at all that we know of).

Screenshot of The Server Conf Tool http://www.files.interestingmix.com.au/stack/mfps_servconf_runtime.png

Screenshot of The Operations Console http://www.files.interestingmix.com.au/stack/mfps_opscons_noruntime.png

(The following server logs were cleansed before the "server start simpleserver" operation)

Extract from 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

Extract from 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
Idan Adar
  • 44,156
  • 13
  • 50
  • 89
  • **server.xml** http://files.interestingmix.com.au/stack/liberty-server.xml – InterestingMix Mar 26 '15 at 03:35
  • The knowledge center guide I followed : http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.installconfig.doc/install_config/t_ov_server_install.html – InterestingMix Mar 26 '15 at 03:36
  • I am having same issue for IBM Mobile First v6.3 with Tomcat 7. I am deploying runtime environment using server configuration tool without any problem but it shows "No runtime can be found." on Operations Console. – Sanket K. Mar 26 '15 at 11:03

2 Answers2

2

Check this post - you cannot use full profile Java SDK by default with Liberty as it is configured to different SSLFactory.

You either need to:
- switch to Oracle JVM
- use separately downloadable IBM SDK for Liberty
- make following changes in the Liberty config:

Create jvm.options file with the following content:

-Djava.security.properties=./custom.java.security

Create custom.java.security in the same directory as jvm.options file you just need these two, nothing more:

ssl.SocketFactory.provider=
ssl.ServerSocketFactory.provider=
Gas
  • 17,601
  • 4
  • 46
  • 93
  • Thank you to you both. It's always a good sign when two people suggest the same solution. I have implemented the jvm.options method as described in both your answers and the issue is now resolved. – InterestingMix Mar 27 '15 at 01:35
1

After some discussions about this error message, the suggestions to solve this are:

  1. To either use a different JRE (Oracle JRE 6 or 7, or IBM JRE 6 or 7 outside of WAS Full Profile).

  2. And/or follow the instructions in the doc link here: http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.doc/ae/rwlp_trouble.html?cp=SSAW57_8.5.5%2F1-17-0

Idan Adar
  • 44,156
  • 13
  • 50
  • 89