Hi all!
We plan to use Utgard for our project.
To test async functional run follow sample:
public class UtgardTutorial1 {
public static void main( String[] args )
throws Exception {
// create connection information
final ConnectionInformation ci = new ConnectionInformation();
ci.setHost( "localhost" );
// ci.setDomain( "localhost" );
ci.setUser( "opc" );
ci.setPassword( "1" );
// ci.setProgId( "Graybox.Simulator" );
ci.setClsid( "2C2E36B7-FE45-4A29-BF89-9BFBA6A40857" ); // if ProgId is not working, try it using the Clsid
// instead
final String itemId = "numeric.sin.float";
// create a new server
final Server server = new Server( ci, Executors.newSingleThreadScheduledExecutor() );
try {
// connect to server
server.connect();
// add sync access, poll every 500 ms
final AccessBase access = new Async20Access( server, 1000, false );
access.addItem( itemId, new DataCallback() {
@Override
public void changed( Item item, ItemState state ) {
System.out.println( item.getId() + " = " + state.getValue().toString() );
}
} );
// start reading
access.bind();
// wait a little bit
Thread.sleep( Long.MAX_VALUE );
// stop reading
access.unbind();
}
catch( final JIException e ) {
System.out.println( String.format( "%08X: %s", e.getErrorCode(), server.getErrorMessage( e.getErrorCode() ) ) );
}
}
}
but after 20 minutes i get get exception and method DataCallback::change stop calling
Exception:
19:12:46.266 [jI_RemUnknown[00000000-0000-0000-c000-000000000046 , L(56296):R(56297)]] WARN o.j.dcom.core.JIComOxidRuntimeHelper - JIComOxidRuntimeHelper RemUnknownThread (not listener)jI_RemUnknown[00000000-0000-0000-c000-000000000046 , L(56296):R(56297)] is purposefully closed by interruption.
java.nio.channels.ClosedByInterruptException: null
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) ~[na:1.8.0_25]
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:406) ~[na:1.8.0_25]
at sun.nio.ch.SocketAdaptor$SocketInputStream.read(SocketAdaptor.java:192) ~[na:1.8.0_25]
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103) ~[na:1.8.0_25]
at org.jinterop.dcom.transport.JIComRuntimeTransport.receive(Unknown Source) ~[org.openscada.jinterop.core_2.0.8.201303051454.jar:na]
at rpc.DefaultConnection.receiveFragment(Unknown Source) ~[org.openscada.jinterop.deps_1.0.0.201303051454.jar:na]
at rpc.DefaultConnection.receive(Unknown Source) ~[org.openscada.jinterop.deps_1.0.0.201303051454.jar:na]
at rpc.ConnectionOrientedEndpoint.receive(Unknown Source) ~[org.openscada.jinterop.deps_1.0.0.201303051454.jar:na]
at org.jinterop.dcom.transport.JIComRuntimeEndpoint.processRequests(Unknown Source) ~[org.openscada.jinterop.core_2.0.8.201303051454.jar:na]
at org.jinterop.dcom.core.JIComOxidRuntimeHelper$2$1.run(Unknown Source) [org.openscada.jinterop.core_2.0.8.201303051454.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25]
19:12:46.269 [jI_RemUnknownListener[00000000-0000-0000-c000-000000000046 , 56296]] INFO o.j.dcom.core.JIComOxidRuntimeHelper - JIComOxidRuntimeHelper RemUnknownListenerjI_RemUnknownListener[00000000-0000-0000-c000-000000000046 , 56296] is purposefully closed by interruption.
java.nio.channels.ClosedByInterruptException: null
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) ~[na:1.8.0_25]
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:248) ~[na:1.8.0_25]
at sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:100) ~[na:1.8.0_25]
at org.jinterop.dcom.core.JIComOxidRuntimeHelper$2.run(Unknown Source) [org.openscada.jinterop.core_2.0.8.201303051454.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25]
Any idea?
Thanks in advice!
Sincerely Dmitry Egorov/