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)
Comment configurez-vous? Quelle liaison de données? Quel est le nom? – bmargulies
J'ai ajouté l'information que vous avez demandée à la fin. –
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