I first tried this code:
------
final ConnectionInformation ci = new ConnectionInformation ();
ci.setHost ("localhost");
ci.setDomain ("default");
ci.setUser ("");
ci.setPassword ("");
ci.setClsid ( "D31DBAD1-0632-11D4-A6B8-00600868B157" );
final Server server = new Server ( ci, new
ScheduledThreadPoolExecutor(2));
final AutoReconnectController autoReconnectController = new
AutoReconnectController ( server );
autoReconnectController.connect ();
------
That gave this error:
------
INFO:
Recieved FAULT
609 [OPCReconnectThread] INFO org.openscada.opc.lib.da.Server - Failed
to connect to server
org.jinterop.dcom.common.JIException: Access is denied, please check
whether the [domain-username-password] are correct. Also, if not
already done please check the GETTING STARTED and FAQ sections in
readme.htm. They provide information on how to correctly configure the
Windows machine for DCOM access, so as to avoid such exceptions.
[0x00000005]
at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:572)
at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:
481)
at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:445)
at org.openscada.opc.lib.da.Server.connect(Server.java:117)
at
org.openscada.opc.lib.da.AutoReconnectController.performReconnect(AutoReconnectController.java:
217)
at org.openscada.opc.lib.da.AutoReconnectController.access
$3(AutoReconnectController.java:190)
at org.openscada.opc.lib.da.AutoReconnectController
$1.run(AutoReconnectController.java:173)
at java.lang.Thread.run(Unknown Source)
Caused by: rpc.FaultException: Received fault. (unknown)
at
rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:
141)
at rpc.Stub.call(Stub.java:113)
at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:568)
... 7 more
609 [OPCReconnectThread] INFO org.openscada.opc.lib.da.Server -
Destroying DCOM session...
------
then i tried this code:
------
final ConnectionInformation ci = new ConnectionInformation ();
ci.setProgId("CCEIBOPCServer.1");
ci.setHost ("localhost");
final Server server = new Server ( ci, new
ScheduledThreadPoolExecutor(2));
final AutoReconnectController autoReconnectController = new
AutoReconnectController ( server );
autoReconnectController.connect ();
------
And gives this error:
------
6344 [OPCReconnectThread] INFO org.openscada.opc.lib.da.Server -
Failed to connect to server
org.jinterop.dcom.common.JIException: Message not found for errorCode:
0xC0000022
at
org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:
115)
at org.jinterop.dcom.core.JIProgId.getIdFromWinReg(JIProgId.java:
130)
at
org.jinterop.dcom.core.JIProgId.getCorrespondingCLSID(JIProgId.java:
162)
at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:
413)
at org.openscada.opc.lib.da.Server.connect(Server.java:
123)
at
org.openscada.opc.lib.da.AutoReconnectController.performReconnect(AutoReconnectController.java:
217)
at org.openscada.opc.lib.da.AutoReconnectController.access
$3(AutoReconnectController.java:190)
at org.openscada.opc.lib.da.AutoReconnectController
$1.run(AutoReconnectController.java:173)
at java.lang.Thread.run(Unknown
Source)
Caused by: jcifs.smb.SmbAuthException: Access is
denied.
at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:
510)
at jcifs.smb.SmbTransport.send(SmbTransport.java:
622)
at jcifs.smb.SmbSession.send(SmbSession.java:
239)
at jcifs.smb.SmbTree.send(SmbTree.java:
109)
at jcifs.smb.SmbFile.send(SmbFile.java:
718)
at jcifs.smb.SmbFile.open0(SmbFile.java:
923)
at jcifs.smb.SmbFile.open(SmbFile.java:
940)
at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:
142)
at
jcifs.smb.TransactNamedPipeOutputStream.<init>(TransactNamedPipeOutputStream.java:
32)
at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:
187)
at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:
92)
at rpc.Stub.attach(Stub.java:
106)
at rpc.Stub.call(Stub.java:
110)
at
org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:
113)
... 8
more
------
In the sample code i fond this: ConnectionInformation.fromURI
( "da:net://localhost:1202" );
That's why i thought i needed an port number.
On the other hand in JEasyOPC this works. No portnumber and no
username or password
------
// JCustomOPC Clients
test
try
{
JOpc.coInitialize();
JOpc jopc = new JOpc("localhost", "CCEIBOPCServer.1",
"JCustomOPC");
jopc.connect();
while (true)
{
Thread.sleep(200);
System.out.println("Client is connected: " +
jopc.ping());
iter+
+;
if (iter == 5)
{
break;
}
}
JOpc.coUninitialize();
}
------
Any Idea what i'm doing wrong in the openscada source.
On Aug 6, 11:06 am, Jens Reimann <
ctron1...@gmail.com> wrote:
> Where do you need to put a port number?