java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个 java应 用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点了.
jnlp文件的具体说明:
应用JNLP部署应用
(1)编写相关应用,打包成一系列jar;
(2)根据jnlp文件说明修改相应的jnlp内容,修改相应的url和jar;
(3)部署jnlp文件和jar到相应的web容器;
(4)编写访问网页,即可使用该应用〔亦可下载jnlp文件使用jws运行应用〕;
补充:如果jar需要访问本地文件资源,需要为你的jar文件签名
之前做过的一个系统部署如下:
1使用ant文件进行打包生成相应的jar文件,及进行文件签名等,生成工程所需的所有架包文件到指定到某个工程目录下,然后指定签证的路径(一般是指定到登陆客户端的project下)
2打好包之后,所有的架包都需要在login的页面加入以下代码;
- <jnlp codebase="<%=realPath%>">
-
- <information>
- <title>Transfers-inforesRES-参数开通平台</title>
- <vendor>
- ...
- </vendor>
- </information>
-
- <resources>
-
- <j2se version="1.5+" java-vm-args="-Xms64m -Xmx512m" />
- <jar href="parasigned/paraClient.jar" version="1.1"/>
- <jar href="parasigned/rc_res.jar" version="1.1"/>
- <jar href="parasigned/ant.jar" version="1.0"/>
- <jar href="parasigned/antlr-2.7.6.jar" version="1.0"/>
- <jar href="parasigned/asm-2.2.3.jar" version="1.0"/>
- <jar href="parasigned/aspectjrt.jar" version="1.0"/>
- <jar href="parasigned/aspectjweaver.jar" version="1.0"/>
- <jar href="parasigned/cglib-nodep-2.1_3.jar" version="1.0"/>
- <jar href="parasigned/com.springsource.com.caucho-3.1.6.jar" version="1.0"/>
- <jar href="parasigned/commons-beanutils.jar" version="1.0"/>
- <jar href="parasigned/commons-io-1.3.2.jar" version="1.0"/>
- <jar href="parasigned/commons-lang.jar" version="1.0"/>
- <jar href="parasigned/commons-logging-1.1.1.jar" version="1.0"/>
- <jar href="parasigned/dozer-5.0.jar" version="1.0"/>
- <jar href="parasigned/flexjson.jar" version="1.0"/>
- <jar href="parasigned/forms-1.2.1.jar" version="1.0"/>
- <jar href="parasigned/jakarta-oro-2.0.8.jar" version="1.0"/>
- <jar href="parasigned/jakarta-regexp-1.5.jar" version="1.0"/>
- <jar href="parasigned/jcalendar.jar" version="1.0"/>
- <jar href="parasigned/jdom.jar" version="1.0"/>
- <jar href="parasigned/jide-oss-2.5.3.jar" version="1.0"/>
- <jar href="parasigned/JImage.jar" version="1.0"/>
- <jar href="parasigned/jwf-1.0.1.jar" version="1.0"/>
- <jar href="parasigned/jxl.jar" version="1.0"/>
- <jar href="parasigned/jxls-core-0.9.8.jar" version="1.0"/>
- <jar href="parasigned/jxls-reader-0.9.8.jar" version="1.0"/>
- <jar href="parasigned/log4j-1.2.15.jar" version="1.0"/>
- <jar href="parasigned/looks.jar" version="1.0"/>
- <jar href="parasigned/neethi-2.0.4.jar" version="1.0"/>
- <jar href="parasigned/OpenSwing.jar" version="1.1"/>
- <jar href="parasigned/OpenSwingBeanInfo.jar" version="1.0"/>
- <jar href="parasigned/poi-3.2-FINAL-20081019.jar" version="1.0"/>
- <jar href="parasigned/poi-contrib-3.2-FINAL-20081019.jar" version="1.0"/>
- <jar href="parasigned/poi-scratchpad-3.2-FINAL-20081019.jar" version="1.0"/>
- <jar href="parasigned/simple-json.jar" version="1.0"/>
- <jar href="parasigned/slf4j-api-1.5.0.jar" version="1.0"/>
- <jar href="parasigned/slf4j-log4j12-1.5.0.jar" version="1.0"/>
- <jar href="parasigned/spring.jar" version="1.0"/>
- <jar href="parasigned/swing-layout.jar" version="1.0"/>
- <jar href="parasigned/twaver.jar" version="1.0"/>
- <jar href="parasigned/substance.jar" version="1.0"/>
- <jar href="parasigned/DJNativeSwing.jar" version="1.0"/>
- <jar href="parasigned/DJNativeSwing-SWT.jar" version="1.0"/>
- <jar href="parasigned/jna_WindowUtils.jar" version="1.0"/>
- <jar href="parasigned/jna-3.2.4.jar" version="1.0"/>
- <jar href="parasigned/MozillaInterfaces-1.8.1.3.jar" version="1.0"/>
- <jar href="parasigned/swt-3.6M6-win32-win32-x86.jar" version="1.0"/>
- <jar href="parasigned/dom4j-1.6.1.jar" version="1.0"/>
- <jar href="parasigned/commons-collections-3.1.jar" version="1.0"/>
- </resources>
-
-
- <security>
- <all-permissions />
- </security>
-
- <application-desc main-class="Launch">
- <argument><%=URL%></argument>
- <argument><%=port%></argument>
- <argument><%=staffcode%></argument>
- <argument><%=passwdMd5%></argument>
- <argument>product</argument>
- <argument><%=SysCode%></argument>
- <argument><%=timestamp%></argument>
- </application-desc>
-
- </jnlp>
ant 文件:
- 登陆时候的lauch:
-
-
- import java.util.Map;
-
- import javax.swing.JFrame;
- import javax.swing.WindowConstants;
-
- import cn.dcalf.swing.WindowUtils;
- import cn.dcalf.util.ClientLaunchArgs;
-
- import com.gpdi.infores.client.util.MsgDlgFuns;
- import com.gpdi.infores.global.client.GlobalVars;
- import com.gpdi.infores.global.client.MyUIManager;
- import com.gpdi.infores.rc.start.client.LoginFrame;
- import com.gpdi.infores.rc.start.client.MainFrame;
- import com.gpdi.infores.rc.task.OnlineUserSynTask;
-
-
- public class Launch {
-
- public static void main(String[] args) {
- Map<String,String> argMap = ClientLaunchArgs.getArgMap(args);
- if (argMap==null || argMap.get(ClientLaunchArgs.IP)==null){
- MsgDlgFuns.showMsg("非法的传入参数。");
- return;
- }
-
- try {
- GlobalVars.setAddress(argMap.get(ClientLaunchArgs.IP));
- GlobalVars.setPort(argMap.get(ClientLaunchArgs.PORT));
- GlobalVars.setVersion(argMap.get(ClientLaunchArgs.VERSION));
- GlobalVars.setProjectId(argMap.get(ClientLaunchArgs.PROJECT_ID));
-
- GlobalVars.getInstance();
- MyUIManager.init();
- OnlineUserSynTask.setStartWork(false);
-
- String staffcode = argMap.get(ClientLaunchArgs.USER);
- String password = argMap.get(ClientLaunchArgs.PASSWORD);
- String timestatmp=argMap.get(ClientLaunchArgs.TIMESTAMP);
- if (timestatmp==null)
- timestatmp="0";
- String sysCode = argMap.get(ClientLaunchArgs.SYSTEM_CODE);
-
- if(staffcode!=null && !staffcode.isEmpty()){
- boolean result = false;
-
- if(sysCode!=null && !sysCode.isEmpty()){
- result = GlobalVars.getInstance().auhenticate(staffcode, password, sysCode , timestatmp);
- }else{
- result = GlobalVars.getInstance().auhenticate(staffcode, password,null,timestatmp);
- }
- if(!result){
- GlobalVars.getInstance().showErrorDialog("登录验证失败,用户名/密码错误,或者登录超时(30分钟).");
- System.exit(0);
- return;
- }
-
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
-
- JFrame main = MainFrame.getInstance();
- String title = GlobalVars.getInstance().buildTitle();
- main.setTitle(title);
-
- main.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- main.setExtendedState(JFrame.MAXIMIZED_BOTH);
- WindowUtils.center(main);
- main.setVisible(true);
- }
- });
- }else{
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- JFrame frame = new JFrame();
- String title = GlobalVars.getInstance().getConfigValueByName("system.title");
- frame.setTitle(title);
- frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- LoginFrame panel = new LoginFrame(frame);
- panel.setVisible(true);
- try{
- panel.requestFocus();
- }catch(Exception e){
- }
- }
- });
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- }
以上为一个C/S架构系统的每次发布的流程
1使用ant文件编译,生成jar
2 生成签证
3在登陆客户端保证好与签证中的jary版本一样
4 给打好的架放入到服务器启动成功即可,登陆客户端 在下载客户端程序认证成功。
jnlp
原文:http://www.cnblogs.com/wangjuneng/p/4634740.html