📄 0094.htm
字号:
<html>
<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>如何使用Codebase</strong></big></p>
一、Codebase和安全问题<p> 我们需要注意的是下载代码如何与Java的安全机制进行协调。本质上讲,codebase属性是应用程序在运行时动态地扩展自己classpath的一种方法。很明显,这会引起安全问题,你可能会下载一些不安全的类代码。所以一个Java 程序如果要下载远程的类,必须安装安全管理器。如果没有安全管理器,一个Java程序只能在装载局部代码,并且忽略所接受到的codebase信息。<P>大部分RMI程序需要从远端下载stub文件,而所有的Jini程序都需要下载服务代理。所以如果你不安装安全管理器,你就不能开发RMI和Jini程序。当你遇到安全例外的错误时,你最好检查以下自己的程序,是否安装了安全管理器。
<P>二、开发时的问题<P>使用codebase经常出现的问题可能与我们的开发观念有关。我们许多人在安装我们的开发环境时都是尽可能的方便。也就是说,当开发分布式应用程序时,我们把客户端和服务端的程序放在同一目录下运行。这会产生许多问题,首先因为客户程序和服务程序都在本地,即使你没有正确的设置codebase属性,类文件也可以在本地的classpath装载进JVM。其次,你可能会忘记安装安全管理器,因为所有的类都可以在本地找到。<P>也就是说,我们这样开发,最大的弊端就是,我们不知道那些类是应该从远端下载的,因为所有的类在本地都找得到。这样你也许会发现你的程序在开发调试时运行的很正常,而一旦到了真正的运行环境,也就说分发到了一个分布式环境中时,就出现了许多问题。也就是我们所说的codebase,以及从网络上下载类的各种问题。我将在另一篇文章中讲如何安装你的开发环境来仿真多机环境。
<P>三、一些常见的codebase错误
<P>上面我们所讲的时codebase是怎么一回事,它是如何工作的。现在,我想讲几个Jini和RMI开发者应该注意的几个问题。<P>1、在codebase中指定多个url:在一个单独的codebase中分隔多个url正确的方法是用空格。例如
<pre><code>
-Djava.rmi.server.codebase="http://url:8080 http://url:8080/myclasses.jar"
</code></pre>
<P>2、不要使用带file的url:如果你有一个可用的webserver,或者你不想以后运行时出现麻烦,建议你不要使用file:URL的形式作为一个codebase。我曾经看过一个讲codebase的例子,还使用file:形式,真的是有些误导读者。用file 这种形式不是个好主意。因为如果服务器给客户传递一个file codebase,那么客户只会试图从本地文件系统装载类代码。如果你在同一台机器上开发和调试服务和客户程序,那么这是可以工作的。但是如果你在不同的机器上运行程序,就会出现问题。<P>3、在codebase URL中不要使用localhost:localhost是用来指定当前机器的。如果服务器设置的url中包含localhost,那么客户分析这个url,就会试图从自己的系统装载类文件。这和file一样是个不好的习惯。
<P>
<P>四、开发RMI程序是不是需要一个webserver
<P> 有时我也怀疑为了开发RMI程序就安装一个webserver,是不是有点太夸张了。开发RMI程序是不是真的需要一个单独的webserver。其实codebase的设置是很灵活的。我们可以使用一个单独的webserver,来作为一个组成员的类文件下载的服务器。对于开发大型的RMI应用程序来说,这是不会有问题的。如果是个人开发的,现在在Jini开发时,sun公司提供了一个简单的webserver,httpd。这个是完全可以完成类文件下载的。
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -