2013-01-28 10:30:34,894 [OPCReconnectThread] INFO com.ste.monitor.client.SteMonitor$AutoReconnectListenerImpl :394 - Something changed on OPC connection state:CONNECTING
2013-01-28 10:30:35,185 [OPCReconnectThread] INFO com.ste.monitor.client.SteMonitor :98 - OPC state changed:true
2013-01-28 10:30:35,185 [OPCReconnectThread] INFO com.ste.monitor.client.SteMonitor$AutoReconnectListenerImpl :367 - Connected to OPC
gen 28, 2013 10:33:34 AM JISession Release_References_TimerTask:run()
Grave: Exception in internal GC
org.jinterop.dcom.common.JIException: An internal error occurred. [0x8001FFFF]
at org.jinterop.dcom.core.JIRemUnknownServer.call(JIRemUnknownServer.java:158)
at org.jinterop.dcom.core.JIRemUnknownServer.addRef_ReleaseRef(JIRemUnknownServer.java:181)
at org.jinterop.dcom.core.JISession.releaseRefs(JISession.java:841)
at org.jinterop.dcom.core.JISession.access$8(JISession.java:828)
at org.jinterop.dcom.core.JISession$Release_References_TimerTask.run(JISession.java:288)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Caused by: java.io.IOException: Connessione in corso interrotta forzatamente dall'host remoto
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:89)
at sun.nio.ch.IOUtil.write(IOUtil.java:60)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:450)
at java.nio.channels.Channels.writeFullyImpl(Channels.java:78)
at java.nio.channels.Channels.writeFully(Channels.java:98)
at java.nio.channels.Channels.access$000(Channels.java:61)
at java.nio.channels.Channels$1.write(Channels.java:174)
at org.jinterop.dcom.transport.JIComTransport.send(JIComTransport.java:143)
at rpc.DefaultConnection.transmitFragment(DefaultConnection.java:144)
at rpc.DefaultConnection.transmit(DefaultConnection.java:78)
at rpc.ConnectionOrientedEndpoint.send(ConnectionOrientedEndpoint.java:222)
at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:112)
at rpc.Stub.call(Stub.java:113)
at org.jinterop.dcom.core.JIRemUnknownServer.call(JIRemUnknownServer.java:152)
... 6 more
Hello,
Sorry for the late reply.
Well, that is what I would have suggested anyway ;-) and this is also what the openSCADA OPC server, which is using utgard, does. In the org.openscada. da.server.opc package of the Atlantis project you can find the opccontroller which shows the "main loop" we are using for OPC communication. This has proven to be quite reliable.
Best regards
Jens Reimann
--
That is actually the next step we are going to document. The problem with the openSCADA drivers until the current 1.2 branch is, that the configuration for the OPC driver is based on XML Beans, which is regarding class loading a pita. This is fine for us, since we know how to set it up, but for others it is complicated to explain. In the current 1.2 branch we replaced it with a EMF based variant. Since we knew this replacement would come we hesitated to document the old way.
Now in the 1.2 branch we also have an Eclipse plugin which makes starting a driver within the IDE pretty painless. This we will explain how to do in the next part of the tutorial, which we will post in the next few weeks.