2011-02-10 16 views
5

Używam aplikacji z pliku jnlp zawierającego przydatne informacje, takie jak dostawca, opis i inne pole.Pobierz bieżące informacje JNLP

Jaki jest najrozsądniejszy sposób uzyskania tych danych w środowisku wykonawczym w celu utworzenia okna dialogowego "Informacje"?

Czy istnieje sposób wykrywania, że ​​aplikacja została uruchomiona bez aplikacji Java Web Start?

Dzięki za pomoc.

Pierre

+1

Jakiś powód, dla którego nie możesz upiec tego w aplikacji razem z plikiem JNLP i zabrać go stamtąd? –

Odpowiedz

5

Istnieją różne strategie osiągnięcia pożądanego celu. Nie będę już wracać do tych, o których już wspomniano, ale zamiast tego opisz jeszcze kilka.


1) Informacje mogą być umieszczone w manifeście archiwum. Można go pobrać przy użyciu metod klasy java.lang.Package.

String title = pckg.getImplementationTitle(); 
String vendor = pckg.getImplementationVendor(); 
String version = pckg.getImplementationVersion(); 

klasa Pakiet ma również zdolność do identyfikacji wszystkich ładowane pakiety.

Package[] package = Package.getPackages(); 

Powtórz poszukiwanie pakietów i uzyskaj listę wszystkich aktualnie załadowanych pakietów.

Najlepszym sposobem umieszczenia informacji w manifestach jest użycie Ant lub podobnego narzędzia do budowania. W ten sposób można ustawić wersję na datę - łatwo zrobić.


2) Dodaj właściwość do sekcji zasobów JNLP.

<resources> 
    .. 
    <property name="jnlp.href" value="${href}" /> 
    .. 
</resources> 

BTW - że stosowanie ${href} ma oznaczać dokładnie ten sam ciąg znaków używany jako atrybut JNLP href.

Użyj metody BasicService.getCodeBase(), aby uzyskać bazę kodów. tworzą URL do pliku przy użyciu JNLP ..

URL urlToJnlp = new URL(
    basicService.getCodeBase(), 
    System.getProperty("jnlp.href")); 

Załaduj plik JNLP i przetwarza go za pomocą jednego z nadmiarem API XML w J2SE. (A jeśli nie ładuje się w interfejsach XML interfejsu J2SE, oznacza to, że jest on nieprawidłowy lub nieprawidłowo sformatowany - i powinien zostać sprawdzony za pomocą narzędzia takiego jak .)

Po załadowaniu i przeanalizowaniu podstawowe informacje można uzyskać & przedstawione.

2

można wykryć, jeśli aplikacja została uruchomiona przy użyciu WebStart poprzez sprawdzenie dostępności usług JNLP. Coś jak:

public boolean launchedByJNLP(){ 
    try { 
     ServiceManager.lookup("javax.jnlp.BasicService"); 
    } catch (UnavailableServiceException e) { 
     return false; 
    } 

    return true; 
} 

Jeśli chodzi o uzyskanie informacji dla jnlp O dialogu, myślę, że najlepszym rozwiązaniem jest to, co chcesz w informacji o swoim oknie w osobnym pliku właściwości pakowane z aplikacją.

Powiązane problemy