标签: ibm-jvm

使用SSL访问Web服务时出错

我有一个程序应该将文件发送到Web服务,这需要SSL连接.我按如下方式运行程序:

SET JAVA_HOME=C:\Program Files\Java\jre1.6.0_07
SET com.ibm.SSL.ConfigURL=ssl.client.props
"%JAVA_HOME%\bin\java" -cp ".;Test.jar" ca.mypackage.Main
Run Code Online (Sandbox Code Playgroud)

这工作正常,但当我改变第一行

SET JAVA_HOME=C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:119)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:140)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:86)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:593)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:552)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:537)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:434)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:247)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:132)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:242)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:222)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:115)
at $Proxy26.fileSubmit(Unknown Source)
at com.testing.TestingSoapProxy.fileSubmit(TestingSoapProxy.java:81)
at ca.mypackage.Main.main(Main.java:63)
Caused by: java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
at javax.net.ssl.DefaultSSLSocketFactory.a(SSLSocketFactory.java:7)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:1)
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:110)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:14)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:902)
at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:86) …
Run Code Online (Sandbox Code Playgroud)

java ssl web-services ibm-jdk ibm-jvm

13
推荐指数
3
解决办法
7万
查看次数

如何检测String.substring是否复制字符数据

我知道对于Oracle Java 1.7更新6及更高版本,在使用时String.substring,会复制String的内部字符数组,对于旧版本,它将被共享.但我发现没有官方API可以告诉我当前的行为.

用例

我的用例是:在解析器中,我喜欢检测是String.substring复制还是共享底层字符数组.问题是,如果字符数组是共享的,那么我的解析器需要明确地"取消共享" new String(s)以避免内存问题.但是,如果String.substring无论如何都要复制数据,那么这不是必需的,并且可以避免在解析器中显式复制数据.使用案例:

// possibly the query is very very large
String query = "select * from test ...";
// the identifier is used outside of the parser
String identifier = query.substring(14, 18);

// avoid if possible for speed,
// but needed if identifier internally 
// references the large query char array
identifier = new String(identifier);
Run Code Online (Sandbox Code Playgroud)

我需要的

基本上,我想有一个静态方法boolean isSubstringCopyingForSure(),可以检测是否new String(..)不需要.如果检测不起作用,我没关系SecurityManager.基本上,检测应该是保守的(为了避免内存问题,我宁愿使用,new String(..)即使没有必要). …

java string jvm ibm-jvm

9
推荐指数
1
解决办法
1740
查看次数

从java程序读取MVS数据集

我正在尝试访问名为 XYZ 的数据集;我的代码是:

ZFile zFile = new ZFile("//X.Y.Z","r");
    try {
        String enc = ZUtil.getDefaultPlatformEncoding();
        InputStream is = zFile.getInputStream();
        BufferedReader rdr = new BufferedReader(new InputStreamReader(is, enc));
        String line;
        while ((line = rdr.readLine()) != null) {
            System.out.println(line);
        };
    }finally {
        zFile.close();
    }
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

com.ibm.jzos.ZFileException: X.Y.Z: Filename is not a valid MVS dataset or DD name; errno=99 errno2=0x0 last_op=0 errorCode=0x0
    at com.ibm.jzos.ZFile.checkSecurityManager(ZFile.java:1592)
    at com.ibm.jzos.ZFile.<init>(ZFile.java:475)
    at it.Main.test(MainApp.java:20)
com.ibm.jzos.ZFileException: //'X.Y.Z': fopen() failed; EDC5049I The specified file name could not be located.; errno=49 errno2=0xc00b0641 last_op=50 errorCode=0x21708 …
Run Code Online (Sandbox Code Playgroud)

db2 zos ibm-jvm

0
推荐指数
1
解决办法
1183
查看次数

标签 统计

ibm-jvm ×3

java ×2

db2 ×1

ibm-jdk ×1

jvm ×1

ssl ×1

string ×1

web-services ×1

zos ×1