|
|||||||||
上一个软件包 下一个软件包 | 框架 无框架 |
SocketChannel
和它相应的服务端Servlet实现让你的服务器应用程序可以工作在防火墙网络里.
请参见:
描述
类摘要 | |
---|---|
HttpTunnelingClientSocketChannelFactory | 创建一个SocketChannel 用于连接一个与HttpTunnelingServlet 通信的服务应用.请参考包的概要了解更多用法. |
HttpTunnelingServlet | 一个代理一个传入数据到真实服务器的HttpServlet ,反之亦然.请参考包的概要了解更多用法. |
HttpTunnelingSocketChannelConfig | 一个客户端HTTP渠道SocketChannel 的ChannelConfig .一个使用
HttpTunnelingClientSocketChannelFactory 创建的SocketChannel 使用
SocketChannel.getConfig() 返回该配置类型的实例. |
一个基于HTTP客户端的SocketChannel
和它相应的服务端Servlet实现让你的服务器应用程序可以工作在防火墙网络里.
HttpTunnelingServlet
必须在web.xml配置.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>NettyTunnelingServlet</servlet-name> <servlet-class>org.jboss.netty.channel.socket.http.HttpTunnelingServlet</servlet-class> <!-- 通道名称,这个应该是一个已注册的本地通道. 查看LocalTransportRegister. --> <init-param> <param-name>endpoint</param-name> <param-value>local:myLocalServer</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>NettyTunnelingServlet</servlet-name> <url-pattern>/netty-tunnel</url-pattern> </servlet-mapping> </web-app>然后,你必须在相同的Servlet上下文绑定你的基于Netty的服务器应用程序或者使用本地传输共享类加载空间 (查看
LocalServerChannelFactory
.)
你可以使用你最喜欢的IoC框架如JBoss微容器、Guice和Spring完成绑定.以下例子显示如何在JBossAS 5里绑定一个echo
服务到上面(web.xml)指定的终端:
<bean name="my-local-echo-server" class="org.jboss.netty.example.http.tunnel.LocalEchoServerRegistration" /> ... package org.jboss.netty.example.http.tunnel; ... public class LocalEchoServerRegistration { private final ChannelFactory factory = new DefaultLocalServerChannelFactory(); private volatile Channel serverChannel; public void start() { ServerBootstrap serverBootstrap = new ServerBootstrap(factory); EchoHandler handler = new EchoHandler(); serverBootstrap.getPipeline().addLast("handler", handler); // 注意"myLocalServer" 是在web.xml里被指定的终端. serverChannel = serverBootstrap.bind(new LocalAddress("myLocalServer")); } public void stop() { serverChannel.close(); } }
ClientBootstrap b = new ClientBootstrap( new HttpTunnelingClientSocketChannelFactory( new NioClientSocketChannelFactory(...))); // Configure the pipeline (or pipeline factory) here. ... // HTTP服务器的主机名 b.setOption("serverName", "example.com"); // 在web.xml里指定的HTTP隧道Servlet的路径 b.setOption("serverPath", "contextPath/netty-tunnel"); b.connect(new InetSocketAddress("example.com", 80);了解更多配置信息如HTTPS属性,参考
HttpTunnelingSocketChannelConfig
.
|
|||||||||
上一个软件包 下一个软件包 | 框架 无框架 |