Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
M
module-lbs-borrower-update-service
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Universitätsbibliothek
    • dd
    • lbs
  • solaris-server
  • module-lbs-borrower-update-service
  • Issues
  • #2

Closed
Open
Created Oct 29, 2019 by Tobias Zeumer@tobias.zeumerOwner

LBS4-Borrower-Update zu langsam

Der Aufruf der Jar-Datei verzögert den eigentlichen Import-Prozess enorm. Ein möglicher Lösungsansatz:

sofern Sie ein bisschen Java-Code schreiben können/wollen (oder Groovy oder irgendeine andere Sprache, die in JVM-Bytecode kompilieren kann). Ich bleibe mal der Einfachheit halber bei Groovy.

Wenn man sich die jar Datei vom Borrower Update ansieht, sieht man, dass dort org.oclc.lbs.bu.BorrowerUpdate als MainClass im Manifest hinterlegt ist. Mal davon ausgehen, dass Sie die Update-Daten über einen Socket empfangen wollen ungefähr folgendes Skelett:

import java.net.ServerSocket
def server = new ServerSocket(4444)

while(true) {
    server.accept { socket ->
        println "processing new connection..."
        socket.withStreams { input, output ->
            def reader = input.newReader()
            // vom reader die Daten lesen
            // in eine Datei schreiben
            def arguments = ... // wie beim Programm-Aufruf auch, nur halt mit der geschriebenen Datei
            org.oclc.lbs.bu.BorrowerUpdate.main( arguments )
            // und hier noch ein bisschen auf Fehler überprüfen
            output << "irgendeine Antwort\n"
        }
        println "processing/thread complete."
    }
}

Sie brauchen halt zum Kompilieren die jar Datei, mit der Sie das Update sonst auch aufrufen. Beim Aufruf Ihres Programmes muss die dann natürlich auch im Klassenpfad liegen. Sollte eigentlich recht elegant und stabil sein. Und weil der Java-Prozess nicht beendet wird auch

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None