我正在尝试使用单一服务在Linux上运行Windows .NET-4.0服务.它不是用单声道或任何东西编译的.我不是100%它可行,但我想我可以尝试(二进制兼容等,似乎可行吗?).如我错了请纠正我.
我收到错误,它找不到一些dll.他们在系统中,但它没有找到它们.这是一个.
$ ldconfig -p | grep Posix
libMonoPosixHelper.so (libc6,x86-64) => /usr/lib/libMonoPosixHelper.so
Run Code Online (Sandbox Code Playgroud)
我尝试添加路径等但没有变化.
$ MONO_LOG_LEVEL=debug mono-service MyService.exe --debug > output.log
Run Code Online (Sandbox Code Playgroud)
要么
$ MONO_PATH=/usr/lib MONO_LOG_LEVEL=debug mono-service MyService.exe --debug > output.log
Run Code Online (Sandbox Code Playgroud)
或LD_LIBRARY_PATH,这是空的,所以我试过
export LD_LIBRARY_PATH=/usr/lib
Run Code Online (Sandbox Code Playgroud)
在输出中总是这样:
Mono: DllImport attempting to load: 'libMonoPosixHelper.so'.
Mono: DllImport loading library: '/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/libMonoPosixHelper.so'.
Mono: DllImport error loading library '/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/libMonoPosixHelper.so: cannot open shared object file: No such file or directory'.
Mono: DllImport loading library: '/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/libMonoPosixHelper.so'.
Mono: DllImport error loading library '/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/libMonoPosixHelper.so: cannot open shared object file: No …Run Code Online (Sandbox Code Playgroud) 我有一些代码在我安装它/在我自己的计算机上运行时,按预期工作,Windows 7,但是当我在其他服务器(2003和2008)上运行它时,它没有.代码来自我在Windows服务中使用的.NET4 WCF服务库.这是简单的.
public void monitorQueueAndDoStuff() {
MonitorRetryQueue();
MonitorMainQueue();
}
private void MonitorMainQueue() {
Log.Info("MonitorMainQueue called");
Task.Factory.StartNew(() =>
{
Log.Info("new thread monitoring queue");
// ...NMS stuff
while (!stopped) {
ITextMessage mess = null;
mess = blockingMessageCollection.Take();
sendToQueue(mess);
}
}
}
});
}
private void MonitorRetryQueue() {
Task.Factory.StartNew(() =>
{
//...NMS stuff
consumer.Listener += new MessageListener(OnRetryErrorMessage);
Log.Info("new thread monitoring second queue");
//need to be constantly up for the consumer to hang around
while (!stopped) {
Thread.Sleep(1000);
}
}
}
});
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置 ActiveMQ 进行相互身份验证,客户端需要一个证书才能将消息传递给代理。我在代理上创建了一个密钥库和一个信任库,并导出了复制到客户端的证书。在客户端,我做了同样的事情,尽管我使用的是 NMS,所以我只使用导出的证书,并将其添加到代理的信任库中。我还将证书添加到其他计算机的本地计算机受信任根证书中。
经纪人的配置是这样的:
<transportConnectors>
<transportConnector name="ssl" uri="ssl://0.0.0.0:61616"/>
</transportConnectors>
<sslContext>
<sslContext keyStore="file:${activemq.base}/conf/keystore.jks"
keyStorePassword="ksPass"
trustStore="file:${activemq.base}/conf/shared.ks"
trustStorePassword="ksPass"/>
</sslContext>
<plugins>
<jaasCertificateAuthenticationPlugin configuration="CertLogin" />
</plugins>
Run Code Online (Sandbox Code Playgroud)
amq 服务wrapper.conf有
wrapper.java.additional.8=-Djava.security.auth.login.config="%ACTIVEMQ_CONF%/login.config"
${activemq.base}/conf/login.config
CertLogin {
org.apache.activemq.jaas.TextFileCertificateLoginModule required
debug=true
org.apache.activemq.jaas.textfiledn.user="users.properties"
org.apache.activemq.jaas.textfiledn.group="groups.properties";
};
Run Code Online (Sandbox Code Playgroud)
${activemq.base}/conf/user.properties 有
user=CN=nms.client.170,\ OU=IT,\ O=MyOrg,\ L=Oslo,\ S=Oslo,\ C=NO
Run Code Online (Sandbox Code Playgroud)
${activemq.base}/conf/groups.properties 有
admins=system
users=system,user
Run Code Online (Sandbox Code Playgroud)
在 NMS 客户端的 appSettings 中,我使用它来连接:
< add key="jms.uri" value="ssl://brokeraddress.in.hosts:61616?needClientAuth=true&wantClientAuth=true&transport.clientCertSubject=nms.client.170&transport.clientCertPassword=ksClientPw&transport.clientCertFilename=C:\TestClient\client170.crt" />
Run Code Online (Sandbox Code Playgroud)
如果我在代理中没有 jaasCertificateAuthenticationPlugin,我可以通过 ssl 连接,但有了它(这就是我的想法),我会收到错误,它在Apache.NMS.ActiveMQ.Connection中失败
获取 ExeptionResponse: "java .lang.SecurityException:无法在没有 SSL 证书的情况下验证传输。”
// Send the connection and see if an ack/nak is …