2017-04-21 2 views
0

Dans une application Web qui s'exécute sur IBM WebSphere Application Server (WAS) version 8.5.5.11, il existe un composant client JAX-WS (en utilisant WAS intégré composant JAX-WS) qui appelle un service Web externe.Désactivation du codage de transfert en bloc pour le client JAX-WS dans WebSphere Application Server 8.5

Pour tout appel de service Web avec un corps HTTP supérieur à 32 Ko, WAS utilisera un codage de transfert en bloc. Malheureusement, le service Web externe ne peut pas gérer le codage de transfert par blocs et ne peut pas effectuer d'erreur. Comment désactiver le codage de transfert en bloc dans le code client WAS JAX-WS?

Répondre

0

Je ne pouvais pas trouver un moyen de désactiver le codage programme de transfert pour le chunked intégré JAX-WS de WAS 8.5.5.x. Mais j'ai trouvé un moyen de le désactiver via WAS "Console d'administration".

Fondamentalement, vous devez faire une copie de l'ensemble de règles «WSHTTPS par défaut» et modifier la politique de «transport HTTP» pour décocher la case «Activer l'encodage de transfert en bloc». Puis affectez ce jeu de règles personnalisé à votre client de service.

Des instructions détaillées peuvent être trouvées à https://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_wsspspthttp.html

0

Vous devez créer un gestionnaire JAX-WS SOAP et remplacer la méthode handleMessage d'ajouter un en-tête http comme ceci:

public boolean handleMessage(SOAPMessageContext smc) { 
    ctx.put(HTTPConstants.CHUNKED, "false"); 
    return true; 
} 

C'est facile, il est question de créer une classe pour le gestionnaire et un simple fichier xml pour déclarer Vérifiez https://jax-ws.java.net/articles/handlers_introduction.htmlorhttp://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/

+0

J'ai déjà essayé cette approche. Mais dans l'implémentation JAX-WS d'IBM WebSphere App Server, il n'y a pas de 'HTTPConstants.CHUNKED', et je n'ai pas trouvé de contrepartie non plus. – thebat

+0

WAS v8.5.5 L'implémentation JAX-WS est Axis2 .. donc 'ctx.put (" __ CHUNKED__ "," false ");' peut fonctionner comme 'HTTPConstants.CHUNKED =" __ CHUNKED __ "' – titou10

+0

J'ai essayé la ligne 'ctx.put ("__CHUNKED__", "false"); ', et j'ai vérifié que cette propriété est bien définie, mais WAS semble simplement l'ignorer et cela n'a aucun effet sur le codage de transfert. – thebat

0

Vous pouvez appliquer un ensemble de politiques et de choisir de désactiver Chunking. enter image description here