|
|||||||||
| 上一个软件包 下一个软件包 | 框架 无框架 | ||||||||
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.
|
|||||||||
| 上一个软件包 下一个软件包 | 框架 无框架 | ||||||||