2017-01-30 7 views
0

Я сбиваю с толку создание пользовательского соединителя для WSO2 ESB 5.0.0. Мне нужен специальный разъем для устаревшего устройства (термометр). Этот разъем будет вызываться через ESB REST API. Единственное, что должен сделать коннектор, это создать соединение сокета с заданным IP-адресом (входным параметром разъема), а затем проанализировать данные ответа. Программа работает совершенно одна. Однако я не знаю, как его интегрировать в пользовательский коннектор. Особенно, как отправить данные из соединителя в ответ на вызов API.Специальный соединитель WSO2 ESB

Мой код Разъем:

@Override 
public void connect(MessageContext messageContext) throws ConnectException { 
    Object templateParam = getParameter(messageContext, "generated_param"); 
    try { 
     log.info("sample connector received message :" + templateParam); 
     /**Add your connector code here 
     **/ 
     Socket socket = new Socket("172.16.xxx.xxx", 2000); 

     BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8")); 
     BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

     out.write("*SRTC\r"); 
     out.flush(); 

     System.out.println(in.readLine()); 

     out.close(); 
     in.close(); 
     socket.close(); 

    } catch (Exception e) { 
    throw new ConnectException(e); 
    } 
} 

Если сообщение in.readLine() следует отправить ???

+0

вам нужно указан в/для вашего медиатора. эти параметры могут быть доступны внутри медиатора в качестве свойств, а ответ посредника может быть помещен в свойство или в полезную нагрузку сообщения. –

+0

спасибо, кроме того, я не уверен, как вызывать пользовательский коннектор в ESB API. Какая правильная последовательность API? – vladikk

ответ

0

Вы должны иметь возможность ссылаться на свой пользовательский посредник с помощью посредника. Ниже приведен пример того, как это сделать.

<class name="org.wso2.esb.tutorial.mediators.SurchargeStockQuoteMediator"> 
<property name="defaultPercentage" value="10"/> 

Вы найдете полезную информацию по следующим адресам.

http://wso2.com/library/2898/ http://wso2.com/library/2936/

Надежда, что помогает.

+0

Вы путали разъем с медиатором? –

0

Вы можете добавить ответ в messageContext в код соединителя, а затем вы можете вызвать значение в прокси с помощью имени, которое вы предоставляете, в то время как добавить значение в свойствах [1]. Теперь вы можете передать значение любому API.

[1] https://github.com/wso2-extensions/esb-connector-ejb2.0/blob/master/src/main/java/org/wso2/carbon/custom/connector/CallEJBStatelessBean.java#L41

2

РЕШИТЬ: Я хранится в ответ MessageContext:

messageContext.setProperty("temperature", Double.parseDouble(in.readLine())); 

, а затем процесс со следующим посредником. Спасибо

1

Я предполагаю, что вы путаный соединитель с посредником класса. В принципе, соединитель представляет собой набор шаблонов, которые определяют операции, которые пользователи могут вызывать из своих конфигураций ESB, чтобы легко получить доступ к определенной логике для обработки сообщений. Как правило, соединители используются для переноса API внешней службы. Например, есть несколько стандартных соединителей, поставляемых с ESB, которые вызывают API-сервисы таких сервисов, как Twitter и JIRA. Вы также можете создать свой собственный коннектор, чтобы обеспечить доступ к другим службам.

Мы не можем создавать java-функции в шаблонах соединителей. Так что мы создаем класс Java и вызвать этот пользовательский класс в шаблоне соединителя с использованием класса медиатор, как,

<class name="class-name"/> 

см,

https://docs.wso2.com/display/ESBCONNECTORS/Writing+a+Connector

https://docs.wso2.com/display/ESB500/Class+Mediator