【发布时间】:2011-03-31 23:12:13
【问题描述】:
我正在尝试编写一个代理,以从 Java 中的本地 HttpServlet 容器调用远程 servlet 对象,但不知何故我被 Howtos 卡住了。
在第一步,我尝试编写一个同时扩展 Servlet 和 Remote 的接口,以便在服务器端我可以将它注册到我的 servlet 容器中,并将它用作代理来序列化对驻留的 servlet 对象的调用在客户端。类似于以下代码:
public interface IServletRemote extends Remote, Servlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws RemoteException;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws RemoteException;
public void init() throws RemoteException;
public void init(ServletConfig config) throws ServletException, RemoteException;
public void destroy() throws RemoteException;
}
我无法超越构建接口,因为上面的代码导致以下错误,这是了解 Java 的多态/继承约束是合理的:
RemoteException 与 Servlet.init(ServletConfig) 中的 throws 子句不兼容
我不完全确定是否/如何找到从本地 servlet 容器远程调用 servlet 对象的解决方案。换句话说,我想知道考虑到 HttpServletRequest、HttpServletResponse 等的序列化要求,我想要实现的目标是否可行?
非常感谢任何提示。
【问题讨论】:
-
这听起来像是一个简单问题的极其复杂的解决方案。您要解决的具体问题是什么?
-
其实是一个复杂的问题。我正在尝试开发一种工具来在两台机器上动态分发 JEE Web 应用程序,其中分布边界是根据最初单一 JEE 应用程序的类之间交换的数据量来识别的。这更像是一个研究问题,我知道更简单的替代方案;但不知何故好奇我的想法是否会奏效。理论上,在应用足够的抽象和序列化之后,我应该能够通过 RMI 分发每个 Java 类。我的目标是在我的解决方案中实践理论。
-
好吧,我不会对你想要做什么做出判断。但是,我会指出,您将需要能够远程代理流(请求和响应都与流一起使用)。您应该查看 rmiio 项目,它可以让您通过 rmi 使用流。
-
我明白了,这解释了很多。抱歉我的怀疑,但没有上下文,你的问题看起来有点过于复杂。
-
@biziclop 我同意。很抱歉一开始没有提供足够的背景知识。