Avatar billede kasseper Nybegynder
31. oktober 2002 - 13:50 Der er 16 kommentarer og
1 løsning

AppServer og FileOutputStream

Hey
jeg har forgæves forsøgt at åbne en fil til at skrive i via min ApplicationServer.
Jeg kan ikke referere absolut til filen der skal skrives i, men se her :

URL url2 = Testclass.class.getResource("/ActiveApps.xml");
InputStream is = url2.openStream();
FileOutputStream fo = new FileOutputStream(url2.getPath(), true);

Første linie laver en URL der referere til filen.
I linie 2 laver jeg MED SUCCES en InputStream jeg kan læse filen fra.
Men når jeg laver linie 3 for jeg en java.io.FileNotFoundException ???????
Det er udelukkende et problem når skidtet kører gennem en Application Server (JRun)
For kører jeg det normalt er der ingen problemer !!!!
Avatar billede davsclaus Nybegynder
31. oktober 2002 - 14:00 #1
Har du prøvet med prefixen file://

så det er noget ala
URL url2 = Testclass.class.getResource("file://folder/wheremyxmlfileis/ActiveApps.xml");
Avatar billede disky Nybegynder
31. oktober 2002 - 14:02 #2
Prøv at udskriv din url2 og se hvad den er sat til.
Avatar billede kasseper Nybegynder
31. oktober 2002 - 14:11 #3
disky >>
når jeg siger :
System.out.println(url2.getPath())
Så kommer der : /apps/myapp/resources/WEB-INF/classes/ActiveApps.xml

Men der ligger den ikke.

davsclaus >> når jeg siger "/ActiveApps.xml" referere den jo til roden,
Og jeg 'kender' jo ikke den absolute path
Avatar billede kasseper Nybegynder
31. oktober 2002 - 14:12 #4
ActiveApps.xml ligger jo rigtigt nok i WEB-INF/classes men ikke med /apps/myapp/resource som rod...!
Avatar billede davsclaus Nybegynder
31. oktober 2002 - 14:13 #5
URL url2 = Testclass.class.getResource("/ActiveApps.xml");

Når du kører det i en app. server så er rod path'en (/) typisk roden
på den folder hvor din applikationer er deployet. Så hvis filen derimod ligger i rodfolderen på harddisken (f.eks. c:\) så kan det være derfor at den ikke kan finde filen i app.serveren, men at det godt virker fra en simpel public static main() klasse.
Avatar billede disky Nybegynder
31. oktober 2002 - 14:16 #6
Ren din getResource() path til at explicit pege på den fil du ønsker.

f.eks.
/WEB-INF/classes/ActiveApps.xml

Din kode fungere nøjagtigt som specifikationen siger den skal.

/ foran betyder roden på din server, og ikke nede i web-inf skuffen.
Avatar billede davsclaus Nybegynder
31. oktober 2002 - 14:17 #7
hvis / er roden på din server, så skal du ikke har / foran, men prøv
uden og lav en System.out for at se hvor den så nu peget hen
Avatar billede kasseper Nybegynder
31. oktober 2002 - 14:54 #8
Kan nogen af jeg så sige mig hvordan i al verden jeg kan læse hele filen ActiveApps.xml via "/ActiveApps.xml" ???????????
Avatar billede kasseper Nybegynder
31. oktober 2002 - 15:02 #9
disky >> getResource("/WEB-INF/classes/ActiveApps.xml") gir mig en null pointer exception, så den dudder ikke

davsclaus >> uden / så leder den i JRUN's interne JVM eksekverings bibliiotek.

Begge >> Jeg har fundet en løsning, grim, men den duer.
I min JSP side kan jeg hive
application.getRealPath("/WEB-INF/classes/ActiveApps.xml") ud i en variabel
og submitte den til min bean.

Tak for hjælpen begge to
Avatar billede kasseper Nybegynder
31. oktober 2002 - 15:08 #10
Ja man kan selvfølgelig også bare vidergive det til sin bønne ved et normalt metode kald :)
Avatar billede disky Nybegynder
31. oktober 2002 - 16:12 #11
Jeg sagde ikke min løsning virkede på dit system, da jeg ikke ved hvor den fil er, jeg gjorde opmærksom på hvordan man angav sådanne ting.
Avatar billede kasseper Nybegynder
01. november 2002 - 07:19 #12
disky >>  Det er jo i princippet essencen i hele spørgsmålet. Min fil ligger i et normalt web pakke hieraki, som bekendt starter med WEB-INF fra 'web' roden. Derfor er jeg jo interesseret i at finde den absolutte sti til netop WEB-INF punket.
Avatar billede disky Nybegynder
01. november 2002 - 08:01 #13
Og den er det jeg sagde kl 14:16:30

Hvilket du også selv fandt ud af, men du syntes ikke mit svar var point værd.

p.s. Men ud fra dit spørgsmål kan man IKKE se hvor du har gemt filen, ud fra din egen kode skulle man tro den ligger i root af webserver
Avatar billede kasseper Nybegynder
01. november 2002 - 09:36 #14
Det du siger i 14:16:30 virker IKKE !
Den kommer til at pege på et JRun specifikt bibliotek.
Spørgsmålet er ikke kun Java orienteret men i høj grad også JRun, da JRun har nogle opskure måder at organisere sin java eksekvering !
Og man skal heller IKKE kunne se hvor jeg har gemt filen, da det jo er det jeg gerne vil finde ud af !

Når min kode kører skal jeg kunne hive den absolute sti ud til filen, jeg ved dog at den ligger i biblioteket WEB-INF/classes/ fra webroot.
Men hvor webapplicationen er instl. har jeg ingen anelse om. !
Avatar billede disky Nybegynder
01. november 2002 - 10:00 #15
Måske skulle du finde en ordentligt applicationsserver så.
Avatar billede kasseper Nybegynder
01. november 2002 - 10:47 #16
:) Ja jeg kæmper en brav kamp mod standarder og overmagt i mit daglige arbejde.
SOOOOO sorry hvis jeg ikke formulerde mig klart fra starten, du er jo ellers altid klar med et godt og brugbart svar, så fejlen her må ligge på min side. Jeg skal oppe mig, ska jeg.....Go Week-end
Avatar billede disky Nybegynder
01. november 2002 - 10:56 #17
God weekend til dig også.

Det vigtigste er du har fået det til at virke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester