2009-07-27 11 views
5

Ho un supporto inedito per un'app Web legacy che utilizza direttamente le classi **. Internal. ** apache xerces all'interno di rt.jar. Penso che la storia sia che questo codice (di nuovo in java1.4) usava esplicitamente xerces e che a un certo punto quando si spostava l'uso java5 del jar xerces veniva rilasciato e quelle classi erano referenziate da rt.jar come interno equivalenti.Il contenuto di rt.jar cambia tra diversi fornitori JVM?

Sto cercando di capire quale sarà l'impatto dell'esecuzione di questo progetto su vari contenitori Web (ad esempio Websphere rispetto a Tomcat ecc.).

  • Is rt.jar fornito da Sun o il venditore JVM/JRE?
  • I fornitori alternativi continuano a utilizzare xerces internamente oppure esistono altre implementazioni XML?

A un certo punto (risorsa permettendo) questo codice dovrà essere modificato per utilizzare le API java standard, volevo capire come potrebbe essere un problema.

Grazie, Rob

risposta

2

In nessuna parte del JVM specifica o la specifica Java Il linguaggio è il rt.jar nemmeno menzionato e tutti i pacchetti *.internal.* sono esplicitamente indicati come non facenti parte delle API.

Pertanto è lecito ritenere che l'utilizzo di uno di questi si colleghi direttamente al fornitore JVM e alla versione di implementazione. Non solo i diversi fornitori possono utilizzare parser XML diversi, ma anche all'interno di un unico fornitore, è possibile eseguire facilmente un problema quando modificano il parser XML, la versione del parser XML o il pacchetto in cui viene spedito il parser XML.

Tutti questi sono cambiamenti perfettamente legali, poiché questi pacchetti non sono API.

Quindi, a meno che tu non stia bene con il fatto di essere legato a un piccolo insieme di JVM conosciuti, dovresti sicuramente passare all'uso delle API standard o almeno usare Xerces come dipendenze esterne e quindi dai normali pacchetti org.apache.xerces.*.

+0

Solo un rapido commento di follow-up sul problema precedente: Quando il codice sopra è stato testato su websphere con una JVM IBM, tali classi, come previsto, non sono state trovate. Inoltre, dopo una ricerca nel runtime di websphere non è stato trovato alcun segno di rt.jar. Il codice è stato riscritto per utilizzare esplicitamente i pacchetti org.apache. **. – RobLucas

Problemi correlati