Java中如何注册协议
2010-08-22 22:37
176 查看
项目中需要在后台向第三方服务器发送Http请求,并且有一些特殊的要求。重写了HttpURLConnection的实现。但是怎么调用这个自定义的HttpURLConnection,而不是调用系统的sun.net.www.protocol.http.HttpURLConnection。
通过查看java原代码(URL.openConnection)可以发现,不管哪种链接都是听过协议处理程序(handle)来取得的。而这个处理程序,是在新建URL对象时候,(听过getURLStreamHandler)进行初始化的。
可以发现,有2种方法可以得到协议处理程序。①、听过URLStreamHandlerFactory产生一个链接;②、听过系统变量java.protocol.handler.pkgs的值拼接上sun的默认实现sun.net.www.protocol来产生一个处理程序。
第一种方法:setURLStreamHandlerFactory(URLStreamHandlerFactory)设置一个工厂类。
此工厂类也只需要实现一个方法.一般是在服务器的代码中设置,比如tomcat,jboss ,was等,用于注册服务器自己的协议,应用级没法设置,因为服务器已经设置过了,应用即使设置了也不起作用。
public interface URLStreamHandlerFactory {
URLStreamHandler createURLStreamHandler(String protocol);
}
第二种方法:听过启动参数-Djava.protocol.handler.pkgs设置要注册协议的自定义包的名称。多个协议包用“|”来分割。协议处理程序类名必须是Handler,而协议包的最后也是协议的名称。如自定义的http协议处理类完整名称,类似 cn.ljt.protocol.http.Handler,cn.ljt.protocol2.http.Handler。则启动参数-Djava.protocol.handler.pkgs设置为 cn.ljt.protocol|cn.ljt.protocol2。
通过查看java原代码(URL.openConnection)可以发现,不管哪种链接都是听过协议处理程序(handle)来取得的。而这个处理程序,是在新建URL对象时候,(听过getURLStreamHandler)进行初始化的。
可以发现,有2种方法可以得到协议处理程序。①、听过URLStreamHandlerFactory产生一个链接;②、听过系统变量java.protocol.handler.pkgs的值拼接上sun的默认实现sun.net.www.protocol来产生一个处理程序。
第一种方法:setURLStreamHandlerFactory(URLStreamHandlerFactory)设置一个工厂类。
此工厂类也只需要实现一个方法.一般是在服务器的代码中设置,比如tomcat,jboss ,was等,用于注册服务器自己的协议,应用级没法设置,因为服务器已经设置过了,应用即使设置了也不起作用。
public interface URLStreamHandlerFactory {
URLStreamHandler createURLStreamHandler(String protocol);
}
第二种方法:听过启动参数-Djava.protocol.handler.pkgs设置要注册协议的自定义包的名称。多个协议包用“|”来分割。协议处理程序类名必须是Handler,而协议包的最后也是协议的名称。如自定义的http协议处理类完整名称,类似 cn.ljt.protocol.http.Handler,cn.ljt.protocol2.http.Handler。则启动参数-Djava.protocol.handler.pkgs设置为 cn.ljt.protocol|cn.ljt.protocol2。
相关文章推荐
- 如何注册伪协议
- 如何注册协议(类似tencent://…)
- java中如何设置HTTP协议的头信息(header)
- 关于JavaWeb如何实现用户注册 后台即时提醒(类似站内信功能)
- 如何使用LoadRunner8.1的java Vuser协议调用jar文件
- 如何用 C 注册 windows 服务程序 (分析 Java Service Wrapper 代码)
- 如何注册java程序为windows服务
- 如何在你的java程序中注册系统级热键
- 如何在你的java程序中注册系统级热键
- 如何处理java相关网络协议占内存的问题啊?为何时间越长,内存占用越大?
- 如何在Java 环境下使用 HTTP 协议收发 MQ 消息
- 如何用JAVA生成注册序列号
- 如何注册java 程序为windows 服务
- 如何注册java程序为windows服务
- java中如何设置HTTP协议的头信息(header)
- 如何在iOS中使用ZXing库(ZXing是一个开源的条码生成和扫描库,开源协议为Apache2.0。它持众多条码格式和语言,比如Java、 C++、 C#、 Objective-C以及Act )
- 如何注册java程序为windows服务
- 如何注册java程序为windows服务
- java 如何实现登陆和注册的验证码功能
- 如何注册java程序为windows服务