Java webservices (JAX-WS) with Ignition 7.9.10 and Java 9

Where can I do that in the packaged JRE provided with the designer launcher of Ignition 8.0 ???

launch_error_2018-11-15_17-34-40.log (26.2 KB)

It seems there is still an issue in the Client/Designer scope.
My module use web services in C/D/G scope.

Seems there’s something wrong with the way this jar is getting packed and included with your module:

<jar name="__1690407430__jaxws-ri-2.3.1.jar" crc="7F6DB53B" length="34"/>

The jar should probably be larger than 34 bytes, no?

edit: Is that even supposed to be a JAR entry? Don’t think so… jaxws-rt is the JAR artifact.

@Kevin.Herron
What is the impact for other Ignition modules when deleting axis-saaj-1.4.jar from the lib/core/gateway folder ???

It works for all scopes ! :joy: with :

  1. Thread.currentThread().setContextClassLoader(XXXXXAction.class.getClassLoader())
    before creating services

  2. deleting axis-saaj-1.4.jar from the lib/core/gateway folder

  3. clean user java cache.

  4. rebuild and package the module with "only" these dependencies for common jar (scope CDG)

Many thanks for your patience, help and valuable support !
I've just have to test the new module-signer...

<dependency>
	<groupId>javax.xml.bind</groupId>
	<artifactId>jaxb-api</artifactId>
	<version>2.4.0-b180830.0359</version>
</dependency>

<dependency>
	<groupId>com.sun.xml.bind</groupId>
	<artifactId>jaxb-core</artifactId>
	<version>2.3.0.1</version>
</dependency>

<dependency>
	<groupId>com.sun.xml.bind</groupId>
	<artifactId>jaxb-impl</artifactId>
	<version>2.4.0-b180830.0438</version>
</dependency>

<dependency>
	<groupId>javax.annotation</groupId>
	<artifactId>javax.annotation-api</artifactId>
	<version>1.3.2</version>
</dependency>

<dependency>
	<groupId>com.sun.xml.ws</groupId>
	<artifactId>jaxws-rt</artifactId>
	<version>2.3.1</version>
</dependency>

<dependency>
	<groupId>javax.xml.ws</groupId>
	<artifactId>jaxws-api</artifactId>
	<version>2.3.1</version>
</dependency>

axis-saaj-1.4.jar was used by the gateway for activation in the past. I need to find out if we still use it or if it can be removed.

1 Like

After a closer look in Designer and Client, webservice port create and bind is ok but I have the following warning in designer


nov. 16, 2018 9:35:58 AM javax.xml.soap.FactoryFinder find
AVERTISSEMENT: Using deprecated META-INF/services mechanism with non-standard property: javax.xml.soap.MetaFactory. Property javax.xml.soap.SAAJMetaFactory should be used instead.

And this issue when I request a webservice (it’s ok in designer, but not ok in the vision client)
Any idea ???


09:33:08.815 [AWT-EventQueue-0] INFO com.bouyguesenergiesservices.ignition.client.videoviewer.ClientScriptModuleDirect - Client scope : scriptBindDevicePort()
09:33:08.817 [AWT-EventQueue-0] INFO com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction - scriptBindDevicePort() - endpointAddress=http://10.60.21.9:580/onvif/device_service,user=ONVIFClient1,password=ONVIFClient1
09:33:08.819 [AWT-EventQueue-0] INFO com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction - actionBindDevicePort() - endpointAddress=http://10.60.21.9:580/onvif/device_service,user=ONVIFClient1,password=ONVIFClient1
cr=1
09:33:10.017 [AWT-EventQueue-0] INFO com.bouyguesenergiesservices.ignition.client.videoviewer.ClientScriptModuleDirect - Client scope : scriptGetServices()
09:33:10.018 [AWT-EventQueue-0] INFO com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction - scriptGetServices()
09:33:10.019 [AWT-EventQueue-0] INFO com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction - actionGetServices()
09:33:10.052 [AWT-EventQueue-0] ERROR com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter - <HTML>Error executing script for event:&nbsp;<code><b>actionPerformed</b></code><BR>on component:&nbsp;<code><b>ButtonDeviceGetServices</b></code>.
com.inductiveautomation.ignition.common.script.JythonExecException: Traceback (most recent call last):
  File "<event:actionPerformed>", line 7, in <module>
	at com.sun.xml.ws.api.SOAPVersion.getMessageFactory(SOAPVersion.java:223)

	at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSOAPMessage(SAAJFactory.java:292)

	at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSAAJ(SAAJFactory.java:222)

	at com.sun.xml.ws.api.message.saaj.SAAJFactory.read(SAAJFactory.java:211)

	at com.sun.xml.ws.message.AbstractMessageImpl.toSAAJ(AbstractMessageImpl.java:236)

	at com.sun.xml.ws.api.message.MessageWrapper.readAsSOAPMessage(MessageWrapper.java:176)

	at com.sun.xml.ws.handler.SOAPMessageContextImpl.getMessage(SOAPMessageContextImpl.java:85)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.SimpleWsAuthHandler.handleMessage(SimpleWsAuthHandler.java:93)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.SimpleWsAuthHandler.handleMessage(SimpleWsAuthHandler.java:28)

	at com.sun.xml.ws.handler.HandlerProcessor.callHandleMessage(HandlerProcessor.java:297)

	at com.sun.xml.ws.handler.HandlerProcessor.callHandlersRequest(HandlerProcessor.java:138)

	at com.sun.xml.ws.handler.ClientSOAPHandlerTube.callHandlersOnRequest(ClientSOAPHandlerTube.java:142)

	at com.sun.xml.ws.handler.HandlerTube.processRequest(HandlerTube.java:127)

	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)

	at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)

	at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)

	at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)

	at com.sun.xml.ws.client.Stub.process(Stub.java:463)

	at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)

	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)

	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)

	at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)

	at com.sun.proxy.$Proxy65.getServices(Unknown Source)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction.actionGetServices(OnvifDeviceAction.java:272)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction.scriptGetServices(OnvifDeviceAction.java:502)

	at com.bouyguesenergiesservices.ignition.client.videoviewer.ClientScriptModuleDirect.deviceGetServicesImpl(ClientScriptModuleDirect.java:337)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.AbstractScriptModule.deviceGetServices(AbstractScriptModule.java:354)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)


java.lang.Error: java.lang.Error: javax.xml.soap.SOAPException: Unable to create SAAJ meta-factory: Provider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found

	at org.python.core.Py.JavaError(Py.java:546)
	at org.python.core.Py.JavaError(Py.java:537)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:188)
	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction.__call__(ScriptManager.java:436)
	at org.python.core.PyObject.__call__(PyObject.java:445)
	at org.python.core.PyObject.__call__(PyObject.java:449)
	at org.python.pycode._pyx6.f$0(<event:actionPerformed>:30)
	at org.python.pycode._pyx6.call_function(<event:actionPerformed>)
	at org.python.core.PyTableCode.call(PyTableCode.java:167)
	at org.python.core.PyCode.call(PyCode.java:18)
	at org.python.core.Py.runCode(Py.java:1386)
	at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:655)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.runActions(ActionAdapter.java:180)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.invoke(ActionAdapter.java:271)
	at com.inductiveautomation.factorypmi.application.binding.action.RelayInvocationHandler.invoke(RelayInvocationHandler.java:57)
	at com.sun.proxy.$Proxy60.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.python.core.PyException: Traceback (most recent call last):
  File "<event:actionPerformed>", line 7, in <module>
	at com.sun.xml.ws.api.SOAPVersion.getMessageFactory(SOAPVersion.java:223)

	at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSOAPMessage(SAAJFactory.java:292)

	at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSAAJ(SAAJFactory.java:222)

	at com.sun.xml.ws.api.message.saaj.SAAJFactory.read(SAAJFactory.java:211)

	at com.sun.xml.ws.message.AbstractMessageImpl.toSAAJ(AbstractMessageImpl.java:236)

	at com.sun.xml.ws.api.message.MessageWrapper.readAsSOAPMessage(MessageWrapper.java:176)

	at com.sun.xml.ws.handler.SOAPMessageContextImpl.getMessage(SOAPMessageContextImpl.java:85)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.SimpleWsAuthHandler.handleMessage(SimpleWsAuthHandler.java:93)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.SimpleWsAuthHandler.handleMessage(SimpleWsAuthHandler.java:28)

	at com.sun.xml.ws.handler.HandlerProcessor.callHandleMessage(HandlerProcessor.java:297)

	at com.sun.xml.ws.handler.HandlerProcessor.callHandlersRequest(HandlerProcessor.java:138)

	at com.sun.xml.ws.handler.ClientSOAPHandlerTube.callHandlersOnRequest(ClientSOAPHandlerTube.java:142)

	at com.sun.xml.ws.handler.HandlerTube.processRequest(HandlerTube.java:127)

	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)

	at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)

	at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)

	at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)

	at com.sun.xml.ws.client.Stub.process(Stub.java:463)

	at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)

	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)

	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)

	at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)

	at com.sun.proxy.$Proxy65.getServices(Unknown Source)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction.actionGetServices(OnvifDeviceAction.java:272)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction.scriptGetServices(OnvifDeviceAction.java:502)

	at com.bouyguesenergiesservices.ignition.client.videoviewer.ClientScriptModuleDirect.deviceGetServicesImpl(ClientScriptModuleDirect.java:337)

	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.AbstractScriptModule.deviceGetServices(AbstractScriptModule.java:354)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)


java.lang.Error: java.lang.Error: javax.xml.soap.SOAPException: Unable to create SAAJ meta-factory: Provider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found

	... 51 common frames omitted
Caused by: java.lang.Error: javax.xml.soap.SOAPException: Unable to create SAAJ meta-factory: Provider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
	at com.sun.xml.ws.api.SOAPVersion.getMessageFactory(SOAPVersion.java:223)
	at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSOAPMessage(SAAJFactory.java:292)
	at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSAAJ(SAAJFactory.java:222)
	at com.sun.xml.ws.api.message.saaj.SAAJFactory.read(SAAJFactory.java:211)
	at com.sun.xml.ws.message.AbstractMessageImpl.toSAAJ(AbstractMessageImpl.java:236)
	at com.sun.xml.ws.api.message.MessageWrapper.readAsSOAPMessage(MessageWrapper.java:176)
	at com.sun.xml.ws.handler.SOAPMessageContextImpl.getMessage(SOAPMessageContextImpl.java:85)
	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.SimpleWsAuthHandler.handleMessage(SimpleWsAuthHandler.java:93)
	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.SimpleWsAuthHandler.handleMessage(SimpleWsAuthHandler.java:28)
	at com.sun.xml.ws.handler.HandlerProcessor.callHandleMessage(HandlerProcessor.java:297)
	at com.sun.xml.ws.handler.HandlerProcessor.callHandlersRequest(HandlerProcessor.java:138)
	at com.sun.xml.ws.handler.ClientSOAPHandlerTube.callHandlersOnRequest(ClientSOAPHandlerTube.java:142)
	at com.sun.xml.ws.handler.HandlerTube.processRequest(HandlerTube.java:127)
	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
	at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
	at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
	at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
	at com.sun.xml.ws.client.Stub.process(Stub.java:463)
	at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
	at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
	at com.sun.proxy.$Proxy65.getServices(Unknown Source)
	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction.actionGetServices(OnvifDeviceAction.java:272)
	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.OnvifDeviceAction.scriptGetServices(OnvifDeviceAction.java:502)
	at com.bouyguesenergiesservices.ignition.client.videoviewer.ClientScriptModuleDirect.deviceGetServicesImpl(ClientScriptModuleDirect.java:337)
	at com.bouyguesenergiesservices.ignition.common.videoviewer.onvif.AbstractScriptModule.deviceGetServices(AbstractScriptModule.java:354)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:186)
	... 48 common frames omitted
Caused by: javax.xml.soap.SOAPException: Unable to create SAAJ meta-factory: Provider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
	at javax.xml.soap.SAAJMetaFactory.getInstance(SAAJMetaFactory.java:112)
	at javax.xml.soap.MessageFactory.newInstance(MessageFactory.java:150)
	at com.sun.xml.ws.api.message.saaj.SAAJFactory.createMessageFactory(SAAJFactory.java:250)
	at com.sun.xml.ws.api.message.saaj.SAAJFactory.getMessageFactory(SAAJFactory.java:103)
	at com.sun.xml.ws.api.SOAPVersion.getMessageFactory(SOAPVersion.java:221)
	... 79 common frames omitted

I will try this :

This workaround has no effect. I still have the issue…Any idea ???

Out of ideas, you're way into uncharted territory, good luck :grimacing: