pdf aus Jar File öffnen, das über Webstart verteilt wurde

erazor85

Grünschnabel
Hi,

ich habe ein problem mit einem java prog, das über webstart verteilt wird.
es hat folgende struktur:

client.jar (alle klassen, die der client braucht)
res.jar (verschiedene pdfs, liegen direkt im root des jars)

mein problem ist nun, dass ich an das res.jar nicht rankomme vom client aus.
da bei webstart die files ja in einem cache (c:\doku...\username\anwendungsdaten\sun\....) gespeichert werden kommt man da nicht ohne weiteres hin. wenn ich den client ausführe ist das user.dir auf das verzeichnis des webbrowsers gesetzt (c:\programme\mozilla firefox).

meine frage: gibt es eine möglichkeit an die pdfs ranzukommen?

meine jnlp datei sieht so aus (der resources teil):
Code:
<resources>
      <j2se version="1.5+"/>
      <jar href="res.jar"/>
      <jar href="client.jar"/>
</resources>

wie komme ich nun an das res.jar bzw. die pdfs ran?

der client an sich und auch das laden der res.jar funktionieren einwandfrei.

danke im voraus für eure mühe

grüße
erazor
 
Hallo,

da gäbs noch eine andere Möglichkeit ;-)

Schaut mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.awt.Desktop;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.concurrent.TimeUnit;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

/**
 * @author Thomas.Darimont
 * 
 */
public class StreamPDFExample {

    public final static String PDF_DOCUMENT_LOCATION = "TelecommunicationsForecasting.pdf";
    public final static int WEB_SERVER_PORT = 4711;

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {

        HttpServer httpServer = HttpServer.create(new InetSocketAddress(
                WEB_SERVER_PORT), 0);
        httpServer.createContext("/", new HttpHandler() {
            public void handle(HttpExchange httpExchange) throws IOException {
                httpExchange.getResponseHeaders().add("Content-type",
                        "application/pdf");

                httpExchange.sendResponseHeaders(200, 0);

                OutputStream outputStream = httpExchange.getResponseBody();

                InputStream inputStream = getClass().getClassLoader()
                        .getResourceAsStream(PDF_DOCUMENT_LOCATION);

                transfer(inputStream, outputStream);

                outputStream.close();

            }
        });
        httpServer.start();

        Desktop.getDesktop().browse(
                new URI("http://localhost:" + WEB_SERVER_PORT));

        TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);

    }

    protected static long transfer(InputStream source, OutputStream destination)
            throws IOException {
        final byte[] buffer = new byte[16384];
        long bytesSent = 0;
        for (int len = source.read(buffer); len > 0; len = source.read(buffer)) {
            destination.write(buffer, 0, len);
            bytesSent += len;
        }
        destination.flush();
        return bytesSent;
    }

}
PDF Files im jar nesten und dann via (seit Java 6 verfügbarem) Webserver zum "Client" Browser / PDF Reader streamen.

Gruß Tom
 

Neue Beiträge

Zurück