Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание JavaWebStart приложения 
:(
    Опции темы
Andyb
Дата 23.6.2004, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

Репутация: 4
Всего: 5



Вдоволь намучившись с разработкой Java Web Start приложения, решил поделиться опытом, дабы те кто начинает не наступали на те же грабли, что и я...
Написать простую программу, и заставить ее работать под Java Web Start - достаточно просто. Но как быть со сложными приложениями, в которых осуществляется доступ к файлам, базе данных и т.д. Вот пример:
Программа, которая может читать, создавать и сохранять текстовые файлы
Код

package WebStart;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class WebStartTest {
public static void main(String args[])
{ TestFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new TestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.show();
}
}

class TestFrame extends JFrame {
private JMenuBar bar;
private JMenu menu;
private JMenuItem open;
private JMenuItem save;
private JMenuItem saveAs;
private JMenuItem exit;
private JScrollPane pane;
private JTextArea text;
private JFileChooser chooser;
private String currFileName = null;

public TestFrame() {
setIconImage(new ImageIcon(getClass().getResource("JHelp.gif")).getImage());
setTitle("WebStartTest");
open = new JMenuItem("Открыть");
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
chooser = new JFileChooser();
int r = chooser.showOpenDialog(null);
if(r == JFileChooser.APPROVE_OPTION){
currFileName = chooser.getSelectedFile().getPath();
openFile(currFileName);
}
}
});
save = new JMenuItem("Сохранить");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveFile();
}
});
saveAs = new JMenuItem("Сохранить как");
saveAs.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveAsFile();
}
});
exit = new JMenuItem("Выход");
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu = new JMenu("Файл");
menu.add(open);
menu.add(save);
menu.add(saveAs);
menu.add(exit);
bar = new JMenuBar();
bar.add(menu);
setJMenuBar(bar);
pane = new JScrollPane();
text = new JTextArea();
pane.getViewport().add(text,null);
getContentPane().add(pane, BorderLayout.CENTER);
}

/**
* openFile
*
* @param fileName String
*/
void openFile(String fileName) {
try
{
File file = new File(fileName);
int size = (int)file.length();
int chars_read = 0;
FileReader in = new FileReader(file);
char[] data = new char[size];
while(in.ready()) {
chars_read += in.read(data, chars_read, size - chars_read);
}
in.close();
text.setText(new String(data, 0, chars_read));
}
catch (IOException e)
{
JOptionPane.showMessageDialog(this,"Ошибка открытия файла "
+ fileName,"Ошибка",JOptionPane.ERROR_MESSAGE);
}
}

boolean saveFile() {
if (currFileName == null) {
return saveAsFile();
}
try
{
File file = new File (currFileName);
FileWriter out = new FileWriter(file);
String txt = text.getText();
out.write(txt);
out.close();
return true;
}
catch (IOException e) {
JOptionPane.showMessageDialog(this,"Ошибка сохранения "
+ currFileName,"Ошибка",JOptionPane.ERROR_MESSAGE);
}
return false;
}

/**
* saveAsFile
*
* @return boolean
*/
boolean saveAsFile() {
this.repaint();
if (JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(this)) {
currFileName = chooser.getSelectedFile().getPath();
this.repaint();
return saveFile();
}
else {
this.repaint();
return false;
}
}

}


1. Компилируем программу
2. Создаем файл манифеста
Код

   Manifest-Version: 1.0
   Main-Class: webstart.WebStartTest

3.Создаем jar файл TestU.jar
4.Создаем файл запуска testU.jnlp
Код

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://caffeine-sd.narod.ru/Java/Test" href="testU.jnlp">
 <information>
   <title>WebStartTest</title>
   <vendor>By AndyB</vendor>
   <homepage href="testU.html" />
   <description></description>
 </information>
<resources>
   <j2se version="1.3+" />
   <jar href="TestU.jar" />
   </resources>
 <application-desc main-class="WebStart.WebStartTest" />
</jnlp>

5.Создаем html страницу testU.html
Код

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>testUnsigned</title>
<script type="text/javascript">
var javawsInstalled = false;
var isIE = false;
var isICE = navigator.userAgent.indexOf("ICEBrowser") >= 0;
if (navigator.mimeTypes && navigator.mimeTypes.length)
 javawsInstalled = navigator.mimeTypes['application/x-java-jnlp-file'];
else
 isIE = true;
function insertLink(url, name) {
 if (javawsInstalled) {
   document.write("<a href=\"" + url + "\">"  + name + "</a>");
 } else {
   if (isICE) {
     document.write("Your Web View does not support Web Start (no appropriate Web Start plugin is available). ");
     document.write("Other popular (external) browsers are supported");
   } else {
     document.write("Need to install Java Web Start");
   }
   document.write(" -- for more information, visit ");
   document.write("<a href=\"http://java.sun.com/products/javawebstart/\">" );
   document.write("the Java Web Start page");
   document.write("</a>");
 }
}
</script>
<script type="text/vbscript">
on error resume next
If isIE Then
 If Not(IsObject(CreateObject("JavaWebStart.IsInstalled"))) Then
   javawsInstalled = false
 Else
   javawsInstalled = true
 End If
End If
</script>
</head>
<body>
<h1>Java Web Start application</h1>
<script type="text/javascript">
<!--
insertLink("testU.jnlp","WebStartTest");
// -->
</script>
<noscript>
<a href="testU.jnlp">WebStartTest</a>
</noscript>
</body>
</html>

6.Публикуем в интернете и пробуем запустить testU

При выборе любого из пунктов меню, кроме Выхода ничего не происходит.
А все от того, что TestU.jar не подписан...

7.Подписываем TestU.jar переименовав его в TestS.jar
Как подписывать архивы подробно описано в подписи в апплетах
8. Далее необходимо изменить testU.jnlp
Код

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://caffeine-sd.narod.ru/Java/Test" href="testS.jnlp">
 <information>
   <title>WebStartTest</title>
   <vendor>By AndyB</vendor>
   <homepage href="testS.html" />
   <description></description>
 </information>
 <security>
   <all-permissions/>
 </security>
 <resources>
   <j2se version="1.3+" />
   <jar href="TestS.jar" />
   </resources>
 <application-desc main-class="WebStart.WebStartTest" />
</jnlp>

9.Заново публикуем в интернете и запускаем testS

Все работает...


Добавлено @ 09:40
Да, совсем забыл перед запуском подписанной программы у вас спросят доверяете ли вы данной подписи. Если вы ответите да(Start) программа запустится, если нет то соответственно нет

Это сообщение отредактировал(а) Andyb - 25.1.2005, 09:32
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.