关于java.net.URL.openConnection()生成的对象

K哥 发布于 2012/06/13 14:50
阅读 3K+
收藏 0
使用以下代码发现:
java.net.URL url = new URL(urlStr);
java.net.HttpURLConnection connection = url.openConnection();
当程序不安装到weblogic服务器时,connection对象是sun.net.www.protocol.http.HttpURLConnection

当部署到weblogic以后,connection对象是weblogic.net.http.SOAPHttpURLConnection
 
如何使部署到weblogic以后,connection仍然sun.net.www.protocol.http.HttpURLConnection?
加载中
1
NoahX
NoahX

weblogic启动脚本时加入,

-Dweblogic.net.http.URLStreamHandlerFactory=xxx.xx.MyURLStreamHandlerFactory

在程序中,System.out.println(System.getProperty(weblogic.net.http.URLStreamHandlerFactory));

看看是不是MyURLStreamHandlerFactory

 

import java.net.URLStreamHandler;
import java.net.URLStreamHandlerFactory;
import sun.net.www.protocol.http.Handler;

public class MyURLStreamHandlerFactory implements URLStreamHandlerFactory {
    public URLStreamHandler createURLStreamHandler(String protocol) {
        protocol = protocol.toLowerCase();
        if ("http".equals(protocol)) {
            return new Handler();
        } else {
            return null;
        }
    }
}


0
红薯
红薯

这个倒是有意思啊,还真没注意到这种问题。

不过 http 的开发一向都是直接用 httpclient 来处理。

0
K哥
K哥

今天突然碰到这个问题,纠结了一天,各位大哥有遇到过的,请指点一下啊!

0
悟方向
悟方向
这个是因为你安装WEBLOGIC的时候 使用了WEBLOGIC自带的bea的 JRockit  JVM 他的实现用的不是SUN的 如果想改的话 估计要改WEBLOGIC的JDK_HOME了
K哥
K哥
确定两边用的JDK都是一样的!!!
悟方向
悟方向
回复 @34176470 : 那你可以看一下你的weblogic的启动日志 启动日志中会打印JAVA_HOME的 看看启动日志对不对
K哥
K哥
我创建域的时候使用的JDK和在myeclipse是里编译并使用的JDK是同一个啊!
0
Monkey
Monkey
这就是API,sun定了一个标准,然后就有不同厂家去实现,和数据库一样。google就是把这个标准山寨了,所以乌龟壳就非常不爽了。
返回顶部
顶部