2011-09-07 8 views
1

Le code WSDL et le code client générés à l'aide de wsimport sont très volumineux. Donc, vous voulez un moyen/paramètre dans jaxws pour charger seulement les classes clientes nécessaires au lieu de les charger toutes, ce qui prend ~ 10 secondes et le tas consommé est également énorme. De même, lors de la création de plusieurs ports utilisant 10 threads différents, la mémoire utilisée peut facilement atteindre 1,5 G et générer une erreur de mémoire insuffisante.Comment charger paresseux le client jaxws

Ce sera d'une grande aide si je peux charger les objets de talon du client paresseusement.

Répondre

0

Votre problème ne peut pas être réparé comme vous le souhaitez. Java charge les classes de manière paresseuse de toute façon, il n'agit pas différemment avec JAX-WS et il n'agit pas étrangement dans votre cas spécifique. Il n'y a pas de paramètre dans JAX-WS pour changer quelque chose et résoudre votre problème. Il me semble que votre vrai problème est un service Web ÉNORME avec des myriades de méthodes, de paramètres, de défauts, etc., bien que j'ai tendance à croire que votre utilisation du tas et les conditions de mémoire insuffisante doivent être attribuées au reste de l'application et non au client JAX-WS. Je pense que votre solution va dans le sens de la division de votre énorme service Web en plusieurs services Web, partitionnés par fonctionnalité ou par un autre concept. Ensuite, vous n'utiliserez que les services (et leurs clients) dont vous avez vraiment besoin.

+0

Merci vagelis, Ici, le problème n'est pas lié au chargement des classes, mais plutôt au portType qui charge complètement chaque thread, ce qui représente un gros tas. Oui, il s'agit d'un service de bug et lors de l'utilisation de axis2, nous n'avons pas eu ce problème car il chargeait les objets portType uniquement lorsque cela était nécessaire. Nous cherchons maintenant un moyen de ne pas charger tous les objets à l'avance dans le client JAXWS. – kiri

+0

C'est juste la façon dont le proxy de service JAX-WS est structuré: trop de classes interconnectées. Et si vous comparez les comptes de classes pour JAX-WS et Axis? – vagelis

+0

Le nombre de classes peut être le même pour les deux mais c'est une préoccupation, le principal souci est les portTypes multiples qui sont requis (ils ne sont pas thread-safe) et ils prennent beaucoup de tas ~ 1GB par exemple pour 10 threads. Donc, courir avec 50 threads nécessitera un tas de ~ 5gb ce qui n'est pas acceptable :-( – kiri

Questions connexes