WSDL: WSAM: неявно сгенерированное входное действие

Я создал веб-сервис с использованием JAX WS в Eclipse и развернул его на сервере приложений Weblogic 12c.

Класс @Webservice и WSDL показаны ниже. Проблема была, когда я использую WSDL для wsimport, я получаю ошибку из-за действия WSAM: ввод / вывод. Я понимаю, что это для WS-адресации, но я не указал явный @Addressing в моем @SOAPBinding.

Вопрос 1) Почему это генерируется в WSDL. Шпион Altova XML не проверяет этот WSDL.

Вопрос 2) Wsimport отлично работает, генерируя клиентские артефакты только с помощью wsimport <>. Я даже не предоставил файл привязки -b, содержащий схемы, указанные в WSDL. Как wsimport может генерировать клиентские артефакты без файла привязки

Спасибо... Venkat

package com.arie.account.web.webservice;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
import javax.xml.ws.Action;
import javax.xml.ws.soap.Addressing;

@WebService(serviceName = "AccountWebservice" ,  name = "AccountWebservice" )
@SOAPBinding(style = Style.RPC ,use=Use.LITERAL)
public class Account {
    @WebMethod 
    @Action()
    public @WebResult(partName="return") AccountResponse getAccountData(
            @WebParam(partName="AccountRequestBean") AccountRequestBean accountRequest){
        return new AccountResponse();
    }
}

WSDL Здесь

<?xml version="1.0" encoding="UTF-8" ?> 
 <!--  Published by JAXWS RI at http://jaxws.dev.java.net. RI's version is JAXWS RI 2.2.6hudson86  svnrevision#12773. 
  > 
 <!  Generated by JAXWS RI at http://jaxws.dev.java.net. RI's version is JAXWS RI 2.2.6hudson86  svnrevision#12773. 
  --> 
 <definitions xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis200401wsswssecurityutility1.0.xsd" xmlns:wsp="http://www.w3.org/ns/wspolicy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.account.ivr.arie.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.account.arie.com/" name="AccountWebservice">
 <types>
 <xsd:schema>
  <xsd:import namespace="http://webservice.account.arie.com/" schemaLocation="http://localhost:7001/ATRWebStatistics/AccountWebservice?xsd=1" /> 
  </xsd:schema>
  </types>
 <message name="getAccountData">
  <part name="AccountRequestBean" type="tns:accountRequestBean" /> 
  </message>
 <message name="getAccountDataResponse">
  <part name="return" type="tns:accountResponse" /> 
  </message>
 <portType name="AccountWebservice">
 <operation name="getAccountData">
  <input wsam:Action="http://webservice.account.arie.com/AccountWebservice/getAccountDataRequest" message="tns:getAccountData" /> 
  <output wsam:Action="http://webservice.account.arie.com/AccountWebservice/getAccountDataResponse" message="tns:getAccountDataResponse" /> 
  </operation>
  </portType>
 <binding name="AccountWebservicePortBinding" type="tns:AccountWebservice">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" /> 
 <operation name="getAccountData">
  <soap:operation soapAction="" /> 
 <input>
  <soap:body use="literal" namespace="http://webservice.account.arie.com/" /> 
  </input>
 <output>
  <soap:body use="literal" namespace="http://webservice.account.arie.com/" /> 
  </output>
  </operation>
  </binding>
 <service name="AccountWebservice">
 <port name="AccountWebservicePort" binding="tns:AccountWebservicePortBinding">
  <soap:address location="http://localhost:7001/ATRWebStatistics/AccountWebservice" /> 
  </port>
  </service>
  </definitions

1 ответ

Попробуйте удалить @Action() из веб-метода. Обычно Action используется для указания явного действия для адресации.

Другие вопросы по тегам