2013-06-10 2 views
2

Если вы пользуетесь примерами, то обслуживание оси2Server очень хорошее. Но когда я создал свой собственный веб-сервис с помощью javax, у меня возникла проблема.WSO2 ответ двоичный почему?

Я использовал WSO2 ESB 4,60 по умолчанию конфигурации

веб-службы:

import javax.jws.WebParam; 
import javax.jws.WebService; 

@WebService 
public class Lpu { 
    public boolean scheduleAnAppointment(@WebParam(name = "time") Integer time) { 
     return true; 
    } 
} 

начиная с веб-службы:

import javax.xml.ws.Endpoint; 

public class Server { 
    public static void main(String[] args) 
    { 
     Endpoint.publish("http://localhost:8090/WebServices/lpu", new Lpu()); 
    } 
} 

конфигурации ESB:

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://ws.apache.org/ns/synapse"> 
    <sequence name="main"> 
     <in> 
     <log level="full"/> 
     <send> 
      <endpoint> 
       <address uri="http://localhost:8090/WebServices/lpu"/> 
      </endpoint> 
     </send> 
     </in> 
     <out> 
     <log level="full"/> 
     <send/> 
     </out> 
    </sequence> 
</definitions> 

ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <axis2ns1:binary xmlns:axis2ns1="http://ws.apache.org/commons/ns/payload">PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxTOkVudmVsb3BlIHhtbG5zOlM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIj48UzpCb2R5PjxuczI6c2NoZWR1bGVBbkFwcG9pbnRtZW50UmVzcG9uc2UgeG1sbnM6bnMyPSJodHRwOi8vZmVyLndlYnNlcnZpY2UvIj48cmV0dXJuPmZhbHNlPC9yZXR1cm4+PC9uczI6c2NoZWR1bGVBbkFwcG9pbnRtZW50UmVzcG9uc2U+PC9TOkJvZHk+PC9TOkVudmVsb3BlPg==</axis2ns1:binary> 
    </soapenv:Body> 
</soapenv:Envelope> 

Я хочу получать:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:scheduleAnAppointmentResponse xmlns:ns2="http://lpu.webservice/"> 
     <return>true</return> 
     </ns2:scheduleAnAppointmentResponse> 
    </S:Body> 
</S:Envelope> 

мой reguest

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fer="http://lpu.webservice/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <lpu:scheduleAnAppointment> 
     <time>12</time> 
     </lpu:scheduleAnAppointment> 
    </soapenv:Body> 
</soapenv:Envelope> 

ответ

1

ESB 4.6.0 выпущен с переходом через транспорт, который не создает сообщение. Итак, если вы используете медиатор журнала в последовательности, вы получите двоичный ответ. Но на стороне клиента вы должны получить ответ в предпочитаемом формате.

Если вы переключитесь на транспорт NIO, в последовательности также вы можете получить полезную нагрузку сообщения. Для этого необходимо изменить транспортную отправителя и получателя в конфигурации axis2 (axis2.conf)

+0

Если я использовал безударный простой сервис axis2 http://docs.wso2.org/wiki/display/ESB451/ESB+Samples+Setup#ESBSamplesSetup-StartingSampleBack-EndServi ces http://codepaste.ru/14606/ и запросить http://codepaste.ru/14604, тогда все хорошо, почему? –

+0

, если я удалю все из и оставьте , тогда выполняется true –

+0

это просто [веб-сервис] (http://codepaste.ru/14611/), и это просто [config] (http: // codepaste. ru/14612 /) esb wso. почему возвращает двоичный код? –

1

Изменение axis2.xml к axis2_nhttp.xml в /repository/conf/carbon.xml изменить:

<ConfigurationFile>${carbon.home}/repository/conf/axis2/axis2_nhttp.xml</ConfigurationFile> 

Еще одно предложение дешифрования полезной нагрузки:

WSO2 responds payload in binary

Смежные вопросы