title: Working OPC UA Simulator example using OPCFoundation/UA-Java project
body: <p>Anyone having simulator example of OPC UA, I am using OPC UA project <a href="https://github.com/OPCFoundation/UA-Java" rel="nofollow noreferrer">https://github.com/OPCFoundation/UA-Java</a> .</p>
  
  <p>I have tried all the server mentioned on this git hub page, but none of them are working for me <a href="https://github.com/node-opcua/node-opcua/wiki/publicly-available-OPCUA-servers" rel="nofollow noreferrer">https://github.com/node-opcua/node-opcua/wiki/publicly-available-OPCUA-servers</a>.</p>
  
  <p>I am using <code>org.opcfoundation.ua.examples.SampleClient</code> utility to check connection and sample values, but not able to do so. If any one having working exampe w.r.t this please share along with code. Once this working I need to configure this setting in apache Nifi to make data pipeline.</p>
  
  <p>code:</p>
  
  <pre><code>public class SampleClient {
  
  
      public static final Locale ENGLISH = Locale.ENGLISH;
      public static final Locale ENGLISH_FINLAND = new Locale("en", "FI");
      public static final Locale ENGLISH_US = new Locale("en", "US");
  
      public static final Locale FINNISH = new Locale("fi");
      public static final Locale FINNISH_FINLAND = new Locale("fi", "FI");
  
      public static final Locale GERMAN = Locale.GERMAN;
      public static final Locale GERMAN_GERMANY = new Locale("de", "DE");
  
      public static void main(String[] args) 
      throws Exception {
  //      if (args.length==0) {
  //          System.out.println("Usage: SampleClient [server uri]");
  //          return;
  //      }
          //String url = /*args[0]*/"opc.tcp://uademo.prosysopc.com:53530/OPCUA/SimulationServer";
          //String url = /*args[0]*/"opc.tcp://uademo.prosysopc.com:53530";
          //String url = /*args[0]*/"opc.tcp://opcua.demo-this.com:51210/UA/SampleServer";
          String url="opc.tcp://mfactorengineering.com:4840";
          //String url="opc.tcp://commsvr.com:51234/UA/CAS_UA_Server";
          //String url="opc.tcp://uademo.prosysopc.com:53530/OPCUA/SimulationServer";
          //String url="opc.tcp://opcua.demo-this.com:51210/UA/SampleServer";
          //String url="opc.tcp://opcua.demo-this.com:51211/UA/SampleServer";
          //String url="opc.tcp://opcua.demo-this.com:51212/UA/SampleServer";
          //String url="opc.tcp://demo.ascolab.com:4841";
          //String url="opc.tcp://alamscada.dynu.com:4096";
  
          System.out.print("SampleClient: Connecting to "+url+" .. ");
  
          //////////////  CLIENT  //////////////
          // Create Client
          Application myApplication = new Application();
          Client myClient = new Client(myApplication);
          myApplication.addLocale( ENGLISH );
          myApplication.setApplicationName( new LocalizedText("Java Sample Client", Locale.ENGLISH) );
          myApplication.setProductUri( "urn:JavaSampleClient" );
  
          CertificateUtils.setKeySize(1024); // default = 1024
          KeyPair pair = ExampleKeys.getCert("SampleClient");
          myApplication.addApplicationInstanceCertificate( pair );        
  
          // The HTTPS SecurityPolicies are defined separate from the endpoint securities
          myApplication.getHttpsSettings().setHttpsSecurityPolicies(HttpsSecurityPolicy.ALL);
  
          // Peer verifier
          myApplication.getHttpsSettings().setHostnameVerifier( SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER );
          myApplication.getHttpsSettings().setCertificateValidator( CertificateValidator.ALLOW_ALL );
  
          // The certificate to use for HTTPS
          KeyPair myHttpsCertificate = ExampleKeys.getHttpsCert("SampleClient"); 
          myApplication.getHttpsSettings().setKeyPair( myHttpsCertificate );
  
          // Connect to the given uri
          SessionChannel mySession = myClient.createSessionChannel(url);
  //      mySession.activate("username", "123");
          mySession.activate();
          //////////////////////////////////////      
  
          /////////////  EXECUTE  //////////////      
          // Browse Root
          BrowseDescription browse = new BrowseDescription();
          browse.setNodeId( Identifiers.RootFolder );
          browse.setBrowseDirection( BrowseDirection.Forward );
          browse.setIncludeSubtypes( true );
          browse.setNodeClassMask( NodeClass.Object, NodeClass.Variable );
          browse.setResultMask( BrowseResultMask.All );
          BrowseResponse res3 = mySession.Browse( null, null, null, browse );             
          System.out.println(res3);
  
          // Read Namespace Array
          ReadResponse res5 = mySession.Read(
              null, 
              null, 
              TimestampsToReturn.Neither,                 
              new ReadValueId(Identifiers.Server_NamespaceArray, Attributes.Value, null, null ) 
          );
          String[] namespaceArray = (String[]) res5.getResults()[0].getValue().getValue();
          System.out.println(Arrays.toString(namespaceArray));
  
          // Read a variable
          ReadResponse res4 = mySession.Read(
              null, 
              500.0, 
              TimestampsToReturn.Source, 
              new ReadValueId(new NodeId(6, 1710), Attributes.Value, null, null ) 
          );      
          System.out.println(res4);
  
          res4 = mySession.Read(
              null, 
              500.0, 
              TimestampsToReturn.Source, 
              new ReadValueId(new NodeId(6, 1710), Attributes.DataType, null, null ) 
          );      
          System.out.println(res4);
  
  
          /////////////  SHUTDOWN  /////////////
          mySession.close();
          mySession.closeAsync();
          //////////////////////////////////////  
  
      }
  
  }
  </code></pre>
  
  <p>exception:</p>
  
  <pre><code>SampleClient: Connecting to opc.tcp://mfactorengineering.com:4840 .. 2017-07-20 11:24:34,909 [main] INFO  CryptoUtil  - SecurityProvider initialized from org.bouncycastle.jce.provider.BouncyCastleProvider
  2017-07-20 11:24:34,909 [main] INFO  CryptoUtil  - Using SecurityProvider BC
  2017-07-20 11:24:35,549 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Connecting
  2017-07-20 11:24:36,142 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Connected
  2017-07-20 11:24:36,753 [main] INFO  SecureChannelTcp  - 1804305022 Closed
  2017-07-20 11:24:36,768 [TcpConnection/Read] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Closed (expected)
  2017-07-20 11:24:36,768 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Closed
  2017-07-20 11:24:36,768 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Connecting
  2017-07-20 11:24:37,408 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Connect failed
  java.net.SocketException: Connection reset
      at java.net.SocketInputStream.read(SocketInputStream.java:209)
      at java.net.SocketInputStream.read(SocketInputStream.java:141)
      at java.net.SocketInputStream.read(SocketInputStream.java:223)
      at org.opcfoundation.ua.utils.bytebuffer.InputStreamReadable._get(InputStreamReadable.java:53)
      at org.opcfoundation.ua.utils.bytebuffer.InputStreamReadable.getInt(InputStreamReadable.java:144)
      at org.opcfoundation.ua.transport.tcp.io.TcpConnection.open(TcpConnection.java:500)
      at org.opcfoundation.ua.transport.tcp.io.SecureChannelTcp.open(SecureChannelTcp.java:565)
      at org.opcfoundation.ua.application.Client.createSecureChannel(Client.java:641)
      at org.opcfoundation.ua.application.Client.createSecureChannel(Client.java:555)
      at org.opcfoundation.ua.application.Client.createSessionChannel(Client.java:370)
      at org.opcfoundation.ua.application.Client.createSessionChannel(Client.java:345)
      at org.opcfoundation.ua.examples.SampleClient.main(SampleClient.java:120)
  2017-07-20 11:24:37,464 [main] WARN  SecureChannelTcp  - Connection failed: Bad_CommunicationError (code=0x80050000, description="2147811328, Connection reset")
  2017-07-20 11:24:37,464 [main] WARN  SecureChannelTcp  - Bad_CommunicationError: Retrying
  2017-07-20 11:24:37,464 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Connecting
  2017-07-20 11:24:38,056 [main] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Connected
  2017-07-20 11:24:38,368 [TcpConnection/Read] WARN  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Error
  org.opcfoundation.ua.common.ServiceResultException: Bad_SecurityChecksFailed (code=0x80130000, description="An error occurred verifying security")
      at org.opcfoundation.ua.transport.tcp.io.TcpConnection$ReadThread.run(TcpConnection.java:782)
  2017-07-20 11:24:38,368 [TcpConnection/Read] INFO  TcpConnection  - mfactorengineering.com/184.173.118.46:4840 Closed
  Exception in thread "main" org.opcfoundation.ua.common.ServiceResultException: Bad_SecurityChecksFailed (code=0x80130000, description="An error occurred verifying security")
      at org.opcfoundation.ua.transport.tcp.io.TcpConnection$ReadThread.run(TcpConnection.java:782)
  </code></pre>