Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » 技术文章库  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 轻松玩转Java Web Start
sharpboy



发贴: 0
积分: 0
于 2003-03-09 11:29 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Java Web Start(以下简称JWS)是SUN提供的一种通过Web来部署和发布Java 程序的新技术,它既可以用来发布Application,也可以用来发布Applet,它获去年全球Java技术最佳创意奖。它仅在第一次运行时下载程序,以后的事情,就全全交给JWS,包括版本的自动更新和维护。这是我们曾经梦寐以求的事情,程序运行在客户端(本地运行,当然有足够的速度),但不用去安装配置客户端,也不用去考虑版本升级后对客户端的维护,这就是JWS提供给我们的好处之一。OK,下面我们就来看看如何玩转JWS,本文仅用发布Application来做说明。
系统环境:Win2000Professional+Tomcat3.2.1+JDK1.3。
一:JWS简介
JWS主要用来通过网络部署你的应用程序,它具有安全、稳定、易维护、易使用的特点。用户访问用JWS部署应用程序的站点,下载发布的应用程序,既可以在线运行,也可以通过JWS的客户端离线运行已下载的应用程序。对同一个应用程序,在第一次运行时下载,以后每次运行时,JWS的客户端会自动去探测是否有版本更新,有更新就自动下载新版本,没有更新就直接运行本地当前版本,所有的麻烦全由JWS去承担。好,下面我们就一步一步来搭建JWS
二:搭建支持JWS的Web站点
第一步:你的Tomcat3.2.1已经正常运转
第二步:找到TomcatHOME/conf下的web.xml文件,在其中添加<mime-type>
application/x-java-jnlp-file
</mime-type>
以支持JNLP文件。
三:部署应用程序
第一步:开发你希望发布的应用程序
第二步:把应用程序及所用到的所有资源打成一个或多个jar包
第三步:如果你的应用程序不会用到任何运行这个应用程序的机器的本地资源,那么,你的应用程序就可以部署了。
第四步:如果你的应用程序用到了运行这个应用程序的机器的本地资源,那么,你的应用程序就必须先签名然后才可以发布。
第五步:如何给应用程序签名
1:首先确保你已经完全安装了Java2的环境,有keytool工具,它位于J2SE SDk的bin目录下。这一般不会有问题。
2:到Dos状态下,进入你需发布应用程序的jar包所在的目录,运行下面这句话
keytool -genkey -keystore myKeystore -alias jwstest
它将会提示你输入用户名、密码等,不用理它,按照提示随便输入即可,但一定要记住密码。运行结束它将会在当前路径下创建名为myKeystore的文件。
3:如果你想察看一下刚才生成的myKeystore文件的内容,可以使用下面这句话:
keytool -list -keystore myKeystore
显示出来应该类似如下:
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry:
jwstest, Tue Nov 23 19:29:32 PST 2001, keyEntry,
Certificate fingerprint (Test):
C3:A9:CD:F3:D3:AC:4D:3F:3C:5B:AF:9E:CF:0D:46:5C
4:对你需发布应用程序的jar包进行签名,运行下面这句话:
jarsigner -keystore myKeystore yourtest.jar jwstest
其中yourtest.jar是你的jar包名,你需要修改它,别的就不必修改了。运行时会提示你输入密码,就是你刚才在生成myKeystore文件时设定的密码。
第六步:部署应用程序的jar包。
1:在Tomcat的webapps中新建目录JWSTest
2:在JWSTest下新建目录apps,META-INF,WEB-INF
3:在apps下新建目录images和lib
4:在META-INF中拷入MANIFEST.MF
5:在WEB-INF中拷入web.xml
6:把已经准备好的jar包拷入lib目录下
四:Jsp页面
第一步:编写用于Web访问的页面index.jsp如下:
<%@page contentType="text/html;charset=gb2312"%>
<html>
<title>JWS Test</title>
<head>
<SCRIPT LANGUAGE="Javascript">
function insertLink(url, name) {
document.write("<a href=" + url + ">" + name + "</a><br><br>");
}
insertLink("http://你的IP:8080/ JWSTest /apps/JWSTest.jnlp"," JWSTest ");
</SCRIPT>
</head>
<body>
</body>
</html>
第二步:在jsp中添加检测访问的客户端是否已经安装了JWS的客户端的代码,示例如下:
<%@page contentType="text/html;charset=gb2312"%>
<html>
<title> JWS Test </title>
<head>
<SCRIPT LANGUAGE="Javascript">
var javawsInstalled = 0;
isIE = "false";
if (navigator.mimeTypes && navigator.mimeTypes.length) {
x = navigator.mimeTypes['application/x-java-jnlp-file'];
if (x) javawsInstalled = 1;
} else {
isIE = "true";
}
function insertLink(url, name) {
if (javawsInstalled) {
document.write("<a href=" + url + ">" + name + "</a><br><br>");
} else {
document.write("<a href=" + url + ">"+ name +"</a><br><br>");
}
}
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
If Not(IsObject(CreateObject("JavaWebStart.IsInstalled"))) Then
javawsInstalled = 0
Else
javawsInstalled = 1
End If
End If
</SCRIPT>
<SCRIPT LANGUAGE="Javascript">
if(javawsInstalled){
insertLink("http://你的IP:8080/ JWSTest /apps/JWSTest.jnlp"," JWSTest ");
}else{
//通知用户要先安装JWS的客户端,你可以自己提供下载或是直接链接到Sun的JWS下载。
//分为两种,如果客户端已经安装了Java运行环境,则只要下载javaws-1_0_1_01-win-int.exe即可。
//如果客户端没有安装Java运行环境,则要下载完整的javaws-1_0_1_01-win-int-rt.exe。
}
</SCRIPT>
</head>
<body>
</body>
</html>
五:JNLP文件
第一步:下面我们来编写JWS的核心配置文件JNLP,有了它,才能将以上各部分联系起来,真正让JWS运转起来。JNLP文件符合标准的XML语法,实质就是一个XML文件。当然,编写它的最好方式是对已写好的JNLP进行改写。JWSTest.jnlp示例如下:
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for SwingSet2 Demo Application -->
<jnlp
spec="1.0+"
codebase="http://你的IP:8080/JWSTest/apps"
href=" JWSTest.jnlp">
<information>
<title> JWS Test </title>
<vendor>YOUR Name</vendor>
<homepage href=" JWSTest.html"/>
<description> JWS Test </description>
<icon href="images/ JWSTest.jpg"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.3"/>
<jar href="lib/ JWSTest.jar"/>
</resources>
<application-desc main-class="运行启动的主类"/>
</jnlp>
第二步:部分JNLP的关键语法
<jnlp>元素
spec:必须是1.0及以上版本,这里用1.0+,不需修改。
codebase:资源的URL,是JNLP指向各连接的起始处,需自行修改。
Href:JNLP文件相对codebase的存放位置,和JNLP文件的全名,需自行修改。
<infomation>元素
Title:发布的应用程序简单标题,需自行修改。
Vendor:发行商信息,可以写上你的大名,需自行修改。
Homepage:存放有关应用程序的相关文档的URL,如help文件等,可有可无。
Description:对应用程序的描述,可以有多对<description></description>,可有可无。
Icon:用户下载你的应用程序后,在JWS里显示的图标的URL,应是gif或jpeg格式。需自行修改。
Offline-allowed:选择项,允许用户离线运行应用程序,一般都会有,不用修改。
<security>元素
选择项,如果没有指明<security>,默认是不允许应用程序访问用户的本地资源,即应用程序是沙箱运行。
如果设定为<all-permissions/>,则表示允许应用程序访问用户的本地资源。一般都会设定此值。
<resource>元素
<j2se version = 指定jdk版本>
<jar href = 指定需发布的应用程序的jar包存放的位置>
<application-desc>元素
main-class:应用程序运行启动的主类
<argument>:应用程序运行时的参数,可以有多个,每一个参数用一对<argument>参数</argument>。
至此,你已经完全构建了运转JWS的各部件。
六:完整发布和测试
前面我们已经准备好了需发布的应用程序的jar包,也写好了用来访问的jsp文件和服务器端的核心jnlp文件。
第一步:在JWSTest下新建目录jsp。把index.jsp拷入jsp目录。
第二步:把jnlp文件直接拷入apps目录下。
第三步:在浏览器里输入:http://localhost:8080/JWSTest/jsp/index.jsp 即可访问到jsp页面。页面应出现JWSTest字样。
第四步:点击JWSTest,连接到apps下的JWSTest.jnlp文件,JWS启动,开始下载你发布的应用程序。
第五步:下载完毕,直接运行即可。以后,你也可以直接运行JWS客户端里已下载的应用程序。
不出意外,应恭喜你已经开始享受JWS带来的乐趣了。
七:常见问题
通过上面的讲述,你一定能体会到JWS的易用性。或许事情并没有那么简单,以我的使用经验,还会有许多问题出现,在这里挑几个经常出现的问题,给出相应解决方法,让大家少走弯路,而享受更多的乐趣。
问题一:JWS不能运行,JNLP文件像普通XML文件一样显示在Browser里
解决办法:请修改tomcat里,发布程序的路径中的web.xml。
在其中添加<mime-type>
application/x-java-jnlp-file
</mime-type>
以支持JNLP文件。
问题二:不能下载资源或下载资源失败
解决办法:请卸载JWS的客户端,并将注册表里有关JWS的项目都删除,并确保program Files下的Java Web Start目录已被删除,然后,重装JWS。
问题三:下载资源中有未签名文件
解决办法:1:确保所有的jar包及其他资源都进行过签名。
2:确保整个资源中,没有中文的命名。好像签名工具不支持中文命名的文件名,所以未签到名。这可让我郁闷了一下午哦。
3:察看已经签名的jar包中,meta-inf路径下的jwstest.sf(jwstest是你在进行签名时-alias后的命名)文件,他详细的列出了所有已签名的文件,以分析签名失败的原因。


palatum edited on 2003-03-09 11:48

作者 学习Java有没有什么捷径? [Re:sharpboy]
sharpboy



发贴: 0
积分: 0
于 2003-03-09 11:32 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
很多网友问我学习Java有没有什么捷径,我说“无他,唯手熟尔”。但是我却很愿意将

自己学习的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛!

要想学好Java,首先要知道Java的大致分类。我们知道,自从Sun推出Java以来,就力图

使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,

这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌

面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Jav

a2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。J2SE开发

桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初

学者来说,好象又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又

最好学的就是J2EE了。J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,Java

Mail等。要学习起来可不是一两天的事。

那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟

悉了吗?然后再从JSP学起。如果你学过HTML,那么事情要好办的多,如果没有,那你快

去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP

。然后你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户

端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全

取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的

,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中

嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了Javabean

可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是

Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它

是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(

也就是我们常听到的Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程

序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你

如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子

邮件的程序,你就得看看Javamail了。

好了,对Java和J2EE有了一些基本概念之后,你就应该编一些程序了,千万不要纸上谈

兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C再Ct

rl+V,也不用劳您老大架再亲自把它 再输一遍吧,再说直接复制还不用怕出错,何乐而

不为呢!还有就是要经常上一些好的Java编程文章,有好的文章要Cut下来,有问题尽管

问,只要问题不是太傻,一般高手都会回答你的。下面介绍几个好的Java方面的编程网

站:

CSDN论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出

版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分



Java研究组织http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的;



Java开发者 http://www.chinajavaworld.com/ 那里Java资料比较全;

java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万

了,同时在线人数也在一千左右,人气很旺的;

IBM的开发者网络http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM

永远的蓝色巨人;

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢

?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知

道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除

了一些散乱的代码之外,可能再没有别的东西了吧!你现在最缺的是实际的工作经验,

而不是书本上那些凭空想出来的程序。所以你快去找一份Java的编程工作来做吧(如果

是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公

司里碰到一个高手,而且他还愿意不厌其烦地教你,这样好象有点难哦!

还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合

理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(

对不起,偶最近《金装四大才子》看多了)。学Java必读的两个开源程序就是Jive和Pe

t Store。Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多

先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访

问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平

时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用

户的感受,这就是我们与国外软件的差距所在)。Jive的资料在很多网站上都有,大家

可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后

就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员

关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本

—J道。Jive(J道版)是由中国Java界大名鼎鼎的banq在Jive 2.1版本基础上改编而成,

全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发

团队在不断升级。你可以访问banq的网站http://www.jdon.com/ 去下载。Pet Store(

宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威

性,想学J2EE和EJB的朋友不要错过了。有意思的是,Pet Store还经常作为各大J2EE厂

商的产品性能的比较标准,就连微软也曾作过一个Pet Store试图证明.NET性能比J2EE优

越,可见Pet Store的例子有多么深入人心。

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一

个项目经理,号称Java很简单,只要三个月就可以学会。其实说这种话的人就如当年小

日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了

Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。设计模式是高级

程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的

是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正

掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计

模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。关于设计模式的资料,还

是向大家推荐banq的网站http://www.jdon.com/ ,他把GOF的23种模式以通俗易懂的方

式诠释出来,纯Java描述,真是经典中的经典。有时间再研究一下MVC结构(把Model-V

iew-Control分离开的设计思想)吧,现在很流行的Structs就是它的一种实现方式,不

过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC

结构。然后你再研究一下软件Refactoring(重整)和极限XP编程,相信你又会上一个台阶



做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,

再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作

室吧,你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑

周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的来

了。。。。。。

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业

做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的

程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

下面介绍两个好的开源项目网站:

湖北省软件公共开发平台http://gro.clinux.org/

共创联盟http://cosoft.org.cn/

哇,好高兴哦,我终于成为高手了!非也,非也。古人云:“识时务者为俊杰”。你知

道计算机界现在的发展形势吗?你知道微软的.NET蓝图和SUN ONE计划之间的明争暗斗吗

?你知道计算机技术将向何处发展吗?其实从各大计算机厂商最近的动作,都可以看出来“

Web服务将是下一代互联网应用的制高点”,而微软的.NET蓝图和SUN ONE计划的斗争焦

点,也就是Web服务。Web服务就是一个崭新的分布式计算模型,它是一系列标准的综合

(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同语言编写的软件能够轻易的集成起来,

使网络资源和Web站点变成一种服务而不是混乱的垃圾场。不远的将来,我们就可以在家

里点击一下鼠标,就可以完成出门旅游的全部准备工作,包括定飞机票,定旅游线路,

定好房间等。请注意,这所有的一切都是Web站点间自动完成的,再也不用象现在一样,

表面上是电子商务,实际上很多环节都是人工操作。也许你会觉得这是天方夜谈,不过

就近的说,你也很有可能承接一个项目,要集成两个企业的ERP系统。很有可能上游企业

的系统是用Dephi编的,而下游企业的系统是用Java编的。你说你是Java高手,大家都看

者你怎么做呢。所以啊,你还得学习新技术,如Web服务,而且你Dephi也要懂一点吧(

Dephi6现在已经提供Web服务的控件了)。 你编的Java系统,可能要和.NET集成,所以

你.NET要懂一点吧?到最后,你可能发现你已经成为Java高手了,但很多时间却在搞别

的技术。太极张三丰里说,最厉害的招式就是没有招式,可能就是这个道理吧!

因为刚刚兴起,所以网上Web服务的资料不是很多,我还是给大家推荐几个网站吧:

中国UDDI技术联盟http://www.uddi-china.org/

CSDN的柴晓路专栏http://www.csdn.net/develop/author/ColumnAuthor/fennivel/ (

注:柴晓路也是互联网上一个有名的人物,他发表过很多关于Web服务的文章,还出了一

书,应该称的上是中国Web服务技术的先行者)

IBM的开发者网络的XML&Web Service专栏:

http://www-900.ibm.com/developerWorks/cn/xml/index.shtml?csdn IBM可是Web服务

的力推者

呜…你费劲千心万苦,总算成为Java高手了,怎叫人不由喜极而泣呢!是啊,真不容易

,真不简单,真叫人感动啊!那么打个电话告诉我吧,什么?我的电话号码是多少?昏

到,你打电话问不就知道了吗,真是的……



作者 Re:轻松玩转Java Web Start [Re:sharpboy]
palatum



CJSDN高级会员


发贴: 451
积分: 80
于 2003-03-09 11:48 user profilesend a private message to usersend email to palatumsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
取消了Jute和笑脸标记。


作者 Re:轻松玩转Java Web Start [Re:sharpboy]
MrTong



发贴: 0
积分: 0
于 2003-03-15 09:53 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sharpboy ,
I have seen that article whose author is TomJava



作者 Re:轻松玩转Java Web Start [Re:sharpboy]
xzpy00007





发贴: 37
积分: 10
于 2003-04-19 16:05 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不错的文章,好啊!



flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923