2010-01-18 5 views
0

J'ai deux projets de code à la fois utilisant CXF pour utiliser les services Web. Lorsque je fais un appel du projet A au projet B, la méthode que j'appelle reçoit des paramètres nuls. J'ai activé la journalisation et le message entrant contient en effet les paramètres corrects. J'ai également essayé d'appeler mon service de SoapUI (un outil de test de service web). Cela dépasse les paramètres comme je l'espère. Quelqu'un a-t-il des idées sur ce qui ne va pas?Appel de service Web via CXF donne des paramètres null

L'interface de service:

@WebService 
public interface IShortlistService { 

    public IShortlist createOrUpdateShortlist(@WebParam(name = "sessionId") String sessionId, 
     @WebParam(name = "datastoreInstance") String datastoreInstance, 
     @WebParam(name = "datastoreRecordId") String datastoreRecordId); 
} 

Les impl de service:

@Name("shortlistService") 
@WebService(endpointInterface = "com.oobjects.shortlist.service.IShortlistService", serviceName = "ShortlistService") 
@Features(features = "org.apache.cxf.feature.LoggingFeature") 
@Transactional 
public class ShortlistService implements IShortlistService { 
    public IShortlist createOrUpdateShortlist(String sessionId, String datastoreInstance, 
     String datastoreRecordId) { 
    // At this point all inputs are null 
    } 
} 

journalisation pour un message entrant qui prouve qu'il est OK:

INFO: Inbound Message 
---------------------------- 
Encoding: UTF-8 
Content-Type: text/xml; charset=UTF-8 
Headers: {cache-control=[no-cache], content-type=[text/xml; charset=UTF-8], connection=[keep-alive], host=[mypc.mycompany.com:8080], content-length=[391], SOAPAction=[""], user-agent=[Apache CXF 2.2.5], Accept=[*/*], pragma=[no-cache]} 
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:createOrUpdateShortlist xmlns:ns1="http://service.shortlist.mycompany.com/"><sessionId>854a48b5-922f-4081-9c76-b6d08b58a341</sessionId><datastoreInstance>http://mypc.mycompany.com:8080/shortlist-app/services/ShortlistService</datastoreInstance></ns1:createOrUpdateShortlist></soap:Body></soap:Envelope> 
-------------------------------------- 

Les versions de CXF sont les mêmes (2.2.5). Je ne peux pas penser quoi d'autre à vérifier!

Certains ont demandé des informations ...

  • @Name est une annotation Seam
  • Configuré programme
  • Aegis databinding (JAXWS n'aime pas les interfaces)
+0

Comment configurez-vous? Quelle liaison de données? Quel est le nom? – bmargulies

+0

J'ai ajouté l'information que vous avez demandée à la fin. –

+0

Simple front end, alors? Il ne respectera pas ces annotations @WebService. J'ai peur que cela fonctionne mieux sur les utilisateurs CXF. Ce n'est pas une simple question de «je peux répondre à votre question», ce sera un exercice de diagnostic prolongé. – bmargulies

Répondre

0

@Lee Theobald. .. il n'y a rien d'évident dans votre question affichée qui révèle pourquoi cela ne fonctionne pas pour vous. Dans ce cas, la «réponse», telle qu'elle est, consiste à demander de l'aide sur «Utilisateurs CXF» et, si nécessaire, à ouvrir une JIRA. Jouer 20 questions dans les commentaires de la question n'est pas très efficace, et il y a beaucoup plus de globes d'experts CXF sur cette liste qu'ici à ce stade. Nous pourrions apporter une question modifiée et y répondre une fois que le mystère sera révélé.

+0

Oui, je suis d'accord. Juste savoir que je n'ai pas fait une erreur évidente est quelque chose de bien cependant. –

0

Bon, le problème résolu en tant qu'erreur. Le type dont j'utilisais l'interface ne se mettait pas à jour depuis le dépôt avant de déployer son service, et comme quelque chose avait changé de sa part (une clause throws a été supprimée) qu'il a archivé mais n'a pas déployé, j'ai utilisé la version plus récente le référentiel. Sa version de l'interface a jeté une exception, mais ma version de l'interface ne le dit pas. Donc:

Cette erreur peut se produire si le fournisseur de services et le client du service utilisent une interface légèrement différente.

+0

Oh, j'ai répondu à cette question car j'avais le même problème et je l'ai découvert. D'une manière ou d'une autre j'ai pensé que j'avais posé la question en premier lieu. – Akku

Questions connexes