我的服务器中运行了WCF服务,它必须在Oracle数据库中保存一些信息,创建XML文件,之后必须调用签署XML的JAR并将签名的XML文件发送到外部网络服务。
执行JAR并对文件进行良好签名但是当它尝试将XML发送到外部Web服务时出现此错误:
Fallo al acceder al WSDL en: https://theExternalWebServiceUri?wsdl.
Ha fallado con: java.lang.RuntimeException:
Unexpected error: java.security.InvalidAlgorithmParameterException:
the trustAnchors parameter must be non-empty.
我必须说当我在cmd中执行JAR时,它会做好一切,它会对文件进行签名并将文件完美地发送到外部Web服务。
我使用此代码从我的WCF服务调用JAR:
Process signProcessWithJava = new Process();
signProcessWithJava.StartInfo.UseShellExecute = false;
signProcessWithJava.StartInfo.FileName = "java";
signProcessWithJava.StartInfo.Arguments = @"-jar " + jarPath + " " + arg1 + " " + arg2;
signProcessWithJava.Start();
signProcessWithJava.WaitForExit();
我也尝试在进程中设置管理员用户,但是JAR没有执行。
我在启动方法之前使用以下行设置管理员用户:
signProcessWithJava.StartInfo.Domain = "domain";
signProcessWithJava.StartInfo.UserName = "Admin";
System.Security.SecureString ss = new System.Security.SecureString();
foreach (var item in "password".ToCharArray())
{
ss.AppendChar(item);
}
signProcessWithJava.StartInfo.Password = ss;
我希望你能帮助我。
任何帮助都将受到赞赏。
答案 0 :(得分:1)
我已经解决了。
问题是我在ProxyConfig文件中有这些行:
System.setProperty("java.net.useSystemProxies", "true");
System.setProperty("javax.net.ssl.trustStore", "resources/cert");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
我用“resources / cert”设置路径,然后用绝对路径替换它:
System.setProperty("javax.net.ssl.trustStore","C:\\runid\\resources\\cert");
//System.setProperty("javax.net.ssl.trustStore", "resources/cert");
这很奇怪,因为它始终在命令行中工作,但不是来自WCF服务调用。