[JAVA] Applet IO met Filesystem

Pagina: 1
Acties:

  • RemcoR
  • Registratie: December 2005
  • Laatst online: 10-05-2024
Hallo,

Ik heb een klein programmatje gemaakt waarbij het de bedoeling is dat de applet ook van bepaalde txt bestandjes kan lezen en kan schrijven naar bepaalde txt bestandjes. Het is de bedoeling dat deze bestandjes op de webserver komen te staan en dat ook vanaf de webserver bestanden gelezen worden. Als ik het programma execute vanuit Context werkt het maar zodra de applet in een html pagina wordt geladen houdt het op. Ik heb al gelezen dat applets geen rechten zouden hebben om te lezen en schrijven. Ik heb al e.e.a. geprobeerd te zoeken via de search en google maar dat heeft me nog weinig opgeleverd. Heeft iemand een idee hoe dit probleem op een eenvoudige wijze op te lossen?

Bvd.

Edit: voor de duidelijkheid, aan de kant van de Client hoeft dus niks gelezen / geschreven te worden het gaat alleen om lezen en schrijven aan kant van de server.

[ Voor 10% gewijzigd door RemcoR op 09-09-2006 02:35 ]


  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 18:50

krvabo

MATERIALISE!

Ik gooi zomaar iets op hoor, maar als je het nu in xml of txtformaat naar de server stuurt, waarop een applicatie draait die de textbestanden ontvangt en verder afhandeld?

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • RemcoR
  • Registratie: December 2005
  • Laatst online: 10-05-2024
krvabo schreef op zaterdag 09 september 2006 @ 02:40:
Ik gooi zomaar iets op hoor, maar als je het nu in xml of txtformaat naar de server stuurt, waarop een applicatie draait die de textbestanden ontvangt en verder afhandeld?
Ik heb niet veel ervaring / ideen hoe dat aan te pakken. Verder is de vraag hoe te lezen uit textbestanden die al op de server staan? Zou dit dat ook op dezelfde manier realiseerbaar zijn?

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 18:50

krvabo

MATERIALISE!

RemcoR schreef op zaterdag 09 september 2006 @ 02:52:
[...]


Ik heb niet veel ervaring / ideen hoe dat aan te pakken. Verder is de vraag hoe te lezen uit textbestanden die al op de server staan? Zou dit dat ook op dezelfde manier realiseerbaar zijn?
Afbeeldingslocatie: http://tweakers.net/ext/f/02c4bc0dbabc2ab72f0e5a417a89d9ec/full.gif
De client stuurt naar de server "write". De server die heel de tijd luisterd naar opdrachten ziet de opdracht en voort deze uit. Daarna stuurt hij naar de client (die wacht op antwoord) of het uitgevoerd is. (of niet, jouw keuze) De client kan dan bijv. weer een nieuw tekstbestand opvragen.
Je maakt dus eigenlijk een soort chatsysteem, maar dan met het versturen van tekstbestandjes of xml.

Tekstbestanden die op de server staan kun je door de serverapplicatie laten uitlezen, of via Apache of andere webserver aan het internet serveren (valt er wel een stuk security weg).
Het veiligste is om de applet een bepaalde code op te laten sturen naar de server, die checkt of deze code correct is. (Let wel, als je dit niet beveiligd wordt het plaintext verstuurd, dus ook weer onveilig)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • RemcoR
  • Registratie: December 2005
  • Laatst online: 10-05-2024
Security is in eerste instantie niet echt van belang, het is gewoon een probeerseltje van mijzelf. Ik heb reeds een apache webserver draaien. En de txt bestandjes kan ik gewoon lezen door http://ip/blabla.txt in te typen. Alleen is het dan de bedoeling dat mijn applet ook inhoud kan lezen van die txt bestandjes, ik denk dat dat op deze manier ook niet echt makkelijk realiseerbaar is. Ik hoopte eigenlijk op een hele eenvoudige oplossing zodat ik gewoon het filesysteem op de webserver kon accessen. Echter ben ik bang dat ik me toch maar weer eens moet gaan verdiepen in Sockets om de boel aan de gang te krijgen.

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Als je toch lokaal wilt werken met bestanden dan moet je je applet (en bijbehorende jars) signen (certificaat). Zo'n certificaat kan je zelf maken met behulp van de tools die bij de JDK geleverd worden.

Daarnaast moet je nog bepaalde policy rechten geven.

Kijk maar eens op:

http://java.sun.com/devel...Articles/Security/Signed/

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Een Java applet heeft zelf geen rechten voor IO acties. Je kan dit realiseren door je applet met een server te laten communiceren en die het IO werk te laten afhandelen.

Always shoot for the moon. Even if you miss you will land among the stars...


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12-02 15:05

Robtimus

me Robtimus no like you

Echter, volgens de documentatie mag een applet zonder verdere stappen (zoals signen) geen IO doen behalve naar de server waar de applet zich bevindt. Het is dan beter op de getCodeBase() en getDocumentBase() methods van java.awt.Applet te gebruiken zodat het server adres altijd hetzelfde is als van de applet.

Bron: http://java.sun.com/sfaq/#prevent

[ Voor 7% gewijzigd door Robtimus op 09-09-2006 16:56 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • RemcoR
  • Registratie: December 2005
  • Laatst online: 10-05-2024
Even een update: Ik heb inmiddels mijn applet gesigned en alles in een jar file gezet. Ook heb ik een mysql server draaien. Er staat een db op die user en pw bevat. Deze worden vergeleken met invoerwaarden uit een textfield en als ze overeenkomen krijg je het volgende scherm. Dit werkt allemaal prima als ik de boel compileer vanuit mij java editor (Context). Als ik echter de boel laad in internet explorer werkt de database connectie niet. Iemand enig idee hoe dit te verhelpen?? De applet is gesigned.


edit3: (wat een ge-edit) het gaat om de melding java.lang.ClassNotFoundException :com.mysql.jdbc.Driver. Na wat googlen schijn ik de jar ook aan de jar van mijn eigen class bestanden toe te moeten voegen om het probleem te verhelpen. Na zowel geprobeerd te hebben de jar bij de package te zetten in index.html als het uit te pakken en bij mijn eigen class bestanden te voegen en vervolgens de boel weer te certificiceren wil het nog steeds niet lukken. De volgende foutmelding verschijnt:

Java Plug-in 1.5.0_06
Using JRE version 1.5.0_06 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\Remco
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.1.50:3306 connect,resolve)

STACKTRACE:

java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.1.50:3306 connect,resolve)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2565)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DatabaseConnectie.makeConnection(DatabaseConnectie.java:25)
at DatabaseConnectie.<init>(DatabaseConnectie.java:12)
at Login.actionPerformed(Login.java:54)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


** END NESTED EXCEPTION **


Last packet sent to the server was 32 ms ago.
Database connection error, contact Remco, or don't.
java.lang.NullPointerException

[ Voor 137% gewijzigd door RemcoR op 29-09-2006 23:10 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:06

Janoz

Moderator Devschuur®

!litemod

Wat is er niet duidelijk aan die foutmelding? java.security.AccessControlException: access denied lijkt mij redelijk duidelijk, zeker wanneer je de opmerking van IceManX gelezen hebt. Een applet mag alleen een verbinding opzetten met de server waar hij ook vandaan komt. Zeer waarschijnlijk haal jij je applet in de browser niet op via http://192.168.1.50/dir/appletbevatter.html.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1