Alternativa a JAXB per il parsing di XML

Attualmente sto usando JAXB per analizzare i documenti XML, però ho bisogno di un performante processore XML.

Migliore = più Veloce e diminuzione della memoria.

Devo processo letteralmente milioni di separare i documenti di XML.

Sto utilizzando websphere application server v7 e java 6.

Ho letto Stax è il modo di andare via JAXP, ma poi ho visto articoli dicendo JAXP è obsoleto.

Se questo è vero, quali sono i miei althernatives di efficiente processo di milioni di XML verdi libretto (ogni documento XML è tra 5Kb – 10Kb) senza che la mia applicazione server crash con problemi di memoria.

  • Se si hanno problemi di memoria con misero 5kB a 10 kB file XML, poi cambiando da JAXB per qualcosa di diverso non ti aiuterà. Come per la velocità: questo dipende da cosa devi fare con quelle XMLs. Fare i “milioni” in memoria per tutto il tempo? Non si riesce a pulire dopo ogni documento? Abbiamo bisogno di vedere l’unmarshalling codice.
  • Vero, però quando funziona a 600 tps elaborazione letteralmente milioni di misero 5kb a 10kb XML documenti, che lo fa diventare un problema
  • A che tasso: sei sicuro che talmente semplice mantenere aggiornati i dati in milioni di file XML è il meglio del meglio? Anche il sistema operativo sarà impantanato con richieste di accesso a file. Come Marchio suggerisce, indagare dove il collo di bottiglia è davvero.
  • Abbiamo XML tramite messaggistica, un terzo sistema, non i file
  • Così che cosa è la relazione di una “transazione” (uno dei 600 al secondo) per i milioni? Quando i messaggi arrivano? Bisogno di memorizzarli come dati XML? (Potrebbe essere una decisione sbagliata.) — Questo è sempre molto fangoso, anzi. Mente di disegnare un quadro chiaro come tutto questo si collega?
  • wheres il fango? abbiamo MDB di elaborazione milioni di messaggi MQ con payload XML. L’XML è elaborato da JAXB. i processi a monte dell’JAXB processo in esecuzione a 600 TPS. Il server che ospita il JAXB processo di fare SOLO XML Unmarshalling, quindi inviare ulteriori messaggi MQ down stream. Lo STATO dei server di hosting JAXB processo sono soffocati, alla fine solo facendo il GC. Il collo di bottiglia è DAVVERO JAXB di elaborazione.

InformationsquelleAutor Hector | 2014-07-19



2 Replies
  1. 1

    Penso che prima di tutto si dovrebbe tenere traccia i problemi di memoria. Quanti di questi XML vengono mantenuti in memoria contemporaneamente, è possibile tenere solo uno (o almeno abbastanza piccola quantità di XMLs) in memoria contemporaneamente?
    Sul server Java processi di solito richiede almeno 1 gb di memoria in modo che la sua non è davvero chiaro se il parsing di XML è qualcosa che rende il processo di fallire.

    Quindi credo davvero che si dovrebbe lavorare con un profiler qui, prima di arrivare a conclusioni che il parser XML deve essere cambiato.

    Ci sono un sacco di parser là fuori,
    Si potrebbe provare a woodstox che è una stax parser.
    Un’altra opzione può essere xstream
    Se siete alla ricerca di qualcosa di analogo JAXB, si potrebbe desiderare di provare un Semplice parser XML

    Linea di fondo credo che si debba prima capire da dove viene il problema esiste, e se si risolve, le probabilità sono che non avete bisogno di passare a un altro framework

    • Grazie per il vostro tempo, abbiamo profilato, identificato XML unmarshalling è il collo di bottiglia, ora sto valutando le alternative
    • Capisco jaxb è male, voglio qualcosa di meglio in grado di far fronte con il mio carico di lavoro
    • Come si fa a capire che JAXB è male?
    • la sua l’unica cosa che gli ERA ospitato il codice. MDB legge XML MQ messaggio, unmarshall quindi inviare la successiva MQ messaggio, il routing di messaggi MQ a valle è basato su XML contenuto. I server che non sono SOLO facendo JAXB di elaborazione.
  2. -1

    È possibile utilizzare Groovy all’interno di Java per leggere xml. Creare un Groovy la classe all’interno del sorgente Java dir se si sta utilizzando maven

    src/main/groovy

    e usare Groovy XMLParser di parser per analizzare o altra classe per scrivere XML. È molto più facile con Groovy a piedi attraverso xml.

    È possibile chiamare la classe Groovy come una classe Java all’interno del vostro programma Java come Groovy compila i file di classe Java

    Via maven utilizzare

    <plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <goals>
                <goal>generateStubs</goal>
                <goal>compile</goal>
                <goal>generateTestStubs</goal>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
    </plugin>

Lascia un commento