Создал виртуальную машину Ubuntu 14.04 x64
Прописал настройки прокси для apt-get
Установил Java 7 от Oracle
Установил Maven
Определил переменные среды http_proxy, https_proxy, ftp_proxy, socks_proxy, JAVA_HOME, M2_HOME, MAVEN_OPTS, M2, PATH
Скачал Eclipse Luna для Java-разработчиков x64 под Линукс
Настроил прокси в Eclipse
Window->Preferences->General->Network Connections
Настроил Maven в Еclipse
Window->Preferences->Maven->Installations
Window->Preferences->Maven->User Settings
Создал проект Maven
- поставил галку на Create Simple Project
- в поле GroupId написал ru.tplatforms от названия организации (дефисы запрещены)
- в поле ArtifactId написал выдуманное мной имя пакета wso2.esb.mediator
Внёс изменения в pom-файл в корне проекта.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ru.tplatforms</groupId>
<artifactId>wso2.esb.mediator</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>wso2-maven2-repository</id>
<url>http://dist.wso2.org/maven2</url>
</repository>
<repository>
<id>apache-Incubating-repo</id>
<name>Maven Incubating Repository</name>
<url>http://people.apache.org/repo/m2-incubating-repository</url>
</repository>
<repository>
<id>apache-maven2-repo</id>
<name>Apache Maven2 Repository</name>
<url>http://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-core</artifactId>
<version>2.1.1-wso2v7</version>
</dependency>
</dependencies>
</project>
Добавлены адреса репозиториев, из которых Maven подгрузит недостающий код. Определена зависимость от пакета org.apache.synapse. Он лежит в основе сервисной шины WSO2. Зависимость добавлял через вкладку Dependencies.
Создал пустой Java-класс EncodingMediator, выбрав соответствующую опцию в контекстном меню проекта
package wso2.esb.mediator;
import org.apache.synapse.MessageContext;
import org.apache.synapse.Mediator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.xml.namespace.QName;
public class EncodingMediator implements Mediator {
private static final Log log = LogFactory.getLog(EncodingMediator.class);
private String incomingEncoding;
private String outgoingEncoding;
public EncodingMediator(){}
public boolean mediate(MessageContext mc) {
System.out.println("Encoding Mediator -------------------------------------------------------------------------------------.");
return true;
}
public String getType() {
return null;
}
public void setTraceState(int traceState) {
traceState = 0;
}
public int getTraceState() {
return 0;
}
public void setIncomingEncoding(String newIncomingEncoding) {
incomingEncoding = newIncomingEncoding;
}
public String getIncomingEncoding() {
return incomingEncoding;
}
public void setOutgoingEncoding(String newOutgoingEncoding){
outgoingEncoding = newOutgoingEncoding;
}
public String getOutgoingEncoding(){
return outgoingEncoding;
}
public String getDescription() {
// TODO Auto-generated method stub
return null;
}
public void setDescription(String arg0) {
// TODO Auto-generated method stub
}
public boolean isContentAware() {
// TODO Auto-generated method stub
return false;
}
}
В этом классе определены два нужных мне свойства incomingEncoding и outgoingEncoding, а также геттеры и сеттеры для них setIncomingEncoding, getIncomingEncoding, setOutgoingEncoding, getOutgoingEncoding. В классе присутствует пустой пока конструктор. Самое интересное будет происходить в методе mediate. Пока что в нём лишь вывод на экран некоторой заметной издали строки, которая нужна для проверки работоспособности медиатора.
Закрыл проект без удаления файлов
Запустил в папке проект mvn eclipse:eclipse
Импортировал проект обратно в Eclipse
Выполнил в папке проекта mvn install
Перенёс созданный файл из подпапки проекта target в WSO2 ESB /repository/components/lib
Удалил ненужное расширение zip в конце файла
Перезапустил сервисную шину
Добавил медиатор Class в одну из имеющихся последовательностей
Увидел в консоли, что медиатор работает
Ссылки:
https://docs.wso2.com/display/ESB481/Class+Mediator
https://docs.wso2.com/display/ESB481/Sample+380%3A+Writing+your+own+Custom+Mediation+in+Java
http://mohamednabeel.blogspot.ru/2014/06/writing-simple-class-mediator-and.html
https://docs.wso2.com/display/ESB481/Writing+Custom+Mediator+Implementations
http://synapse.apache.org/apidocs/org/apache/synapse/MessageContext.html