Apache Camel — лучшая библиотека интеграции с открытым исходным кодом
Apache Camel — это потрясающая библиотека интеграции с открытым исходным кодом, которую можно использовать в качестве основы ESB или в отдельных приложениях для маршрутизации, преобразования или передачи систем (см .: интеграция нескольких систем). Camel довольно универсален и не заставляет пользователей развертываться в какой-либо конкретный контейнер или технологию JVM. Развертывание в OSGi для гибкой модульности, развертывание в Java EE при использовании стека Java EE или развертывание в Plain Jane Java Main, если вы выполняете легкие развертывания в стиле микросервисов .
Бегущий верблюд по EAP
Недавно у меня было несколько человек, которые задавали вопросы о работе Camel на платформе JBoss Enterprise Application Platform , и я обычно могу сказать: « Хорошо, посмотрите на этот потрясающий блог, который кто-то делал по этому поводу ».
Однако для некоторых людей в крупных компаниях, которые предпочитают курировать использование сторонних библиотек и предпочитают помещать их в глобально доступный путь к классам, упаковка библиотек Camel в их WAR / EAR невозможна.
Вот несколько причин, по которым вы можете захотеть упаковать Camel в EAP в качестве глобальной библиотеки:
- Золотое изображение, список кураторов
- уменьшить раздутые военные развертывания
- может исправлять / обновлять библиотеки в одном месте
- убедитесь, что все приложения используют утвержденные версии
Почему вы НЕ МОЖЕТЕ сделать это:
- Контейнеры Java EE предназначены для мультитенантов
- Не гибкий в вариантах / версиях развертывания
- Возможные проблемы / коллизии пути к классам в зависимости от сторонней библиотеки и транзитивных зависимостей
- Сложно управлять контейнером Java EE
Модули EAP
Независимо от подходов pro / con, как лучше всего поставить Camel в виде модуля на JBoss EAP, чтобы вы могли использовать его из глобального пути к классам? Ответ заключается в использовании собственной модульной системы JBoss EAP, которая называется « Модули ». Мы можем создавать настраиваемые модули для EAP и включать их в наши тощие войны .
Шаг за шагом
Для этого блога я буду использовать ранее созданный пример Camel, развернутый как простой WAR-проект . Однако вместо включения всех банок верблюда в <scope>compile</scope>
мы изменим область действия на следующую:
1
2
3
4
5
6
|
< dependency > < groupId >org.apache.camel</ groupId > < artifactId >camel-core</ artifactId > < version >${camel.version}</ version > < scope >provided</ scope > </ dependency > |
Просто обновите, параметры области maven помогут вам точно контролировать, как ваши зависимости упаковываются и представляются в classpath:
- compile — область по умолчанию, используется для компиляции проекта и упакована в classpath как часть фазы
package
- предоставленный — зависимость требуется для времени компиляции, но НЕ упаковывается в артефакт, созданный на этапе сборки
package
- время выполнения — зависимость должна находиться в пути к классам при запуске, но не требуется для компиляции и также не упаковывается
Есть пара других, но вы можете проверить документы, чтобы получить полное понимание.
Итак, теперь, когда мы изменили область действия на предоставленную, если мы сделаем сборку, мы сможем проверить нашу WAR и убедиться, что в ней нет банок Camel:
Создайте проект из $ SOURCE_ROOT
1
2
3
4
5
6
7
8
|
ceposta @postamachat $ mvn clean install [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3 .324s [INFO] Finished at: Wed Jul 16 14 : 16 : 53 MST 2014 [INFO] Final Memory: 29M/310M [INFO] ------------------------------------------------------------------------ |
Перечислите содержание WAR
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
ceposta @postamachat $ unzip -l target/camel-cxf-contract-first- 1.0 . 0 -SNAPSHOT.war Archive: target/camel-cxf-contract-first- 1.0 . 0 -SNAPSHOT.war Length Date Time Name -------- ---- ---- ---- 0 07 - 16 - 14 14 : 15 META-INF/ 132 07 - 16 - 14 14 : 15 META-INF/MANIFEST.MF 0 07 - 16 - 14 14 : 15 WEB-INF/ 0 07 - 16 - 14 14 : 15 WEB-INF/classes/ 0 07 - 16 - 14 14 : 15 WEB-INF/classes/camelinaction/ 0 07 - 16 - 14 14 : 15 WEB-INF/classes/camelinaction/order/ 0 07 - 16 - 14 14 : 15 WEB-INF/classes/META-INF/ 0 07 - 16 - 14 14 : 15 WEB-INF/classes/META-INF/spring/ 0 07 - 16 - 14 14 : 15 WEB-INF/classes/wsdl/ 1927 07 - 16 - 14 14 : 15 WEB-INF/classes/camelinaction/order/ObjectFactory. class 992 07 - 16 - 14 14 : 15 WEB-INF/classes/camelinaction/order/OrderEndpoint. class 1723 07 - 16 - 14 14 : 15 WEB-INF/classes/camelinaction/order/OrderEndpointImpl. class 2912 07 - 16 - 14 14 : 15 WEB-INF/classes/camelinaction/order/OrderEndpointService. class 604 07 - 16 - 14 14 : 15 WEB-INF/classes/log4j.properties 1482 07 - 16 - 14 14 : 15 WEB-INF/classes/META-INF/spring/camel-cxf.xml 1935 07 - 16 - 14 14 : 15 WEB-INF/classes/META-INF/spring/camel-route.xml 3003 07 - 16 - 14 14 : 15 WEB-INF/classes/wsdl/order.wsdl 1193 05 - 23 - 14 04 : 22 WEB-INF/web.xml 0 07 - 16 - 14 14 : 15 META-INF/maven/ 0 07 - 16 - 14 14 : 15 META-INF/maven/com.redhat.demos/ 0 07 - 16 - 14 14 : 15 META-INF/maven/com.redhat.demos/camel-cxf-contract-first/ 8070 07 - 16 - 14 14 : 03 META-INF/maven/com.redhat.demos/camel-cxf-contract-first/pom.xml 134 07 - 16 - 14 14 : 15 META-INF/maven/com.redhat.demos/camel-cxf-contract-first/pom.properties -------- ------- 24107 23 files |
Если мы попытаемся развернуть этот проект в EAP, мы наверняка столкнемся с проблемами пути к классам, потому что Camel по умолчанию не включен в путь к классам в EAP. Итак, давайте построим модули сами.
Сначала получите доступ к EAP, загрузив его с портала поддержки Red Hat. (Обратите внимание, что эти шаги могут работать в Wildfly, но я использую EAP для этого обсуждения).
ПРИМЕЧАНИЕ: я буду использовать JBoss EAP 6.2 для этого примера, а также дистрибутив Apache Camel для Red Hat, который поставляется из JBoss Fuse 6.1
Для каждой зависимости в вашем pom, для которой вы хотите создать пользовательский модуль, вам придется повторять эти шаги (обратите внимание, что эти шаги формализованы в базе знаний EAP на портале поддержки Red Hat ):
создайте папку в $ EAP_HOME / modules для хранения вашего нового модуля
1
2
|
ceposta @postamachat (jboss-eap- 6.2 ) $ cd modules ceposta @postamachat (modules) $ mkdir -p org/apache/camel/core |
создайте папку с именем main в папке модуля, так как именно здесь мы разместим фляги для модуля
1
|
ceposta @postamachat (modules) $ mkdir org/apache/camel/core/main |
Теперь нам нужно выяснить, какие зависимости / файлы должны входить в этот модуль. Если вы используете Maven’s Dependency Plugin, это очень поможет.
ПРИМЕЧАНИЕ: эти шаги являются одноразовыми, однако, возможно, стоит потратить немного времени на автоматизацию этих шагов с помощью скрипта perl / python / bash. для этой демонстрации я не создавал сценарий, но если вы это сделаете, я буду признателен, если вы поделитесь им со всеми, либо сообщите мне об этом в твиттере @christianposta, либо сделайте запрос на извлечение проекта github, связанного с этим блогом .. спасибо !
покажите зависимости для проекта и каждого артефакта:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
ceposta @postamachat $ mvn dependency:tree [INFO] ------------------------------------------------------------------------ [INFO] Building [TODO]Camel CXF Contract First Example 1.0 . 0 -SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin: 2.8 :tree ( default -cli) @ camel-cxf-contract-first --- [INFO] com.redhat.demos:camel-cxf-contract-first:war: 1.0 . 0 -SNAPSHOT [INFO] +- org.apache.camel:camel-core:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | \- com.sun.xml.bind:jaxb-impl:jar: 2.2 . 6 :provided [INFO] +- org.apache.camel:camel-cxf:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.camel:camel-spring:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | | \- org.springframework:spring-tx:jar: 3.2 . 8 .RELEASE:provided [INFO] | +- org.apache.camel:camel-cxf-transport:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.cxf:cxf-rt-frontend-jaxrs:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | +- javax.ws.rs:javax.ws.rs-api:jar: 2.0 -m10:provided [INFO] | | \- org.apache.cxf:cxf-rt-bindings-xml:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.cxf:cxf-rt-frontend-jaxws:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | +- xml-resolver:xml-resolver:jar: 1.2 :provided [INFO] | | +- asm:asm:jar: 3.3 . 1 :provided [INFO] | | +- org.apache.cxf:cxf-rt-frontend-simple:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | \- org.apache.cxf:cxf-rt-ws-addr:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | \- org.apache.cxf:cxf-rt-ws-policy:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | \- org.apache.neethi:neethi:jar: 3.0 . 3 :provided [INFO] | +- org.springframework:spring-core:jar: 3.2 . 8 .RELEASE:provided [INFO] | | \- commons-logging:commons-logging:jar: 1.1 . 3 :provided [INFO] | +- org.springframework:spring-beans:jar: 3.2 . 8 .RELEASE:provided [INFO] | +- org.springframework:spring-context:jar: 3.2 . 8 .RELEASE:provided [INFO] | | \- org.springframework:spring-expression:jar: 3.2 . 8 .RELEASE:provided [INFO] | +- org.apache.cxf:cxf-rt-features-clustering:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | \- org.apache.cxf:cxf-rt-bindings-soap:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | \- org.apache.cxf:cxf-rt-databinding-jaxb:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] +- log4j:log4j:jar: 1.2 . 16 :provided [INFO] +- org.slf4j:slf4j-api:jar: 1.6 . 6 :provided [INFO] +- org.slf4j:slf4j-log4j12:jar: 1.6 . 6 :provided [INFO] +- org.apache.cxf:cxf-rt-transports-http-jetty:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.cxf:cxf-api:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | +- org.codehaus.woodstox:woodstox-core-asl:jar: 4.2 . 0 :provided [INFO] | | | \- org.codehaus.woodstox:stax2-api:jar: 3.1 . 1 :provided [INFO] | | +- org.apache.ws.xmlschema:xmlschema-core:jar: 2.1 . 0 :provided [INFO] | | +- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar: 1.7 . 1 :provided [INFO] | | +- wsdl4j:wsdl4j:jar: 1.6 . 3 :provided [INFO] | | \- org.osgi:org.osgi.compendium:jar: 4.2 . 0 :provided [INFO] | +- org.apache.cxf:cxf-rt-transports-http:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.cxf:cxf-rt-core:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | +- org.eclipse.jetty:jetty-server:jar: 8.1 . 14 .v20131031:provided [INFO] | | +- org.eclipse.jetty:jetty-continuation:jar: 8.1 . 14 .v20131031:provided [INFO] | | \- org.eclipse.jetty:jetty-http:jar: 8.1 . 14 .v20131031:provided [INFO] | | \- org.eclipse.jetty:jetty-io:jar: 8.1 . 14 .v20131031:provided [INFO] | | \- org.eclipse.jetty:jetty-util:jar: 8.1 . 14 .v20131031:provided [INFO] | +- org.eclipse.jetty:jetty-security:jar: 8.1 . 14 .v20131031:provided [INFO] | \- org.apache.geronimo.specs:geronimo-servlet_3.0_spec:jar: 1.0 :provided [INFO] +- org.apache.camel:camel-test-spring:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.camel:camel-test:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | \- org.springframework:spring-test:jar: 3.2 . 8 .RELEASE:provided [INFO] +- junit:junit:jar: 4.11 :test [INFO] | \- org.hamcrest:hamcrest-core:jar: 1.3 :test [INFO] \- org.springframework:spring-web:jar: 3.2 . 5 .RELEASE:provided [INFO] +- aopalliance:aopalliance:jar: 1.0 :provided [INFO] \- org.springframework:spring-aop:jar: 3.2 . 5 .RELEASE:provided [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 .450s [INFO] Finished at: Wed Jul 16 15 : 03 : 08 MST 2014 [INFO] Final Memory: 17M/310M [INFO] ------------------------------------------------------------------------ |
Это дает вам полный список зависимостей для вашего проекта и каждой из верхних и транзитивных зависимостей. Теперь вы знаете, какие банки должны идти в каждый модуль.
Следующим шагом является загрузка всех этих jar-файлов, чтобы их было легко скопировать в папку модуля:
Скопируйте все зависимости проекта в цель / зависимость
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
ceposta @postamachat $ mvn dependency:copy-dependencies ceposta @postamachat $ ls -l target/dependency total 32072 -rw-r--r-- 1 ceposta staff 4467 Jul 16 14 : 50 aopalliance- 1.0 .jar -rw-r--r-- 1 ceposta staff 43581 Jul 16 14 : 50 asm- 3.3 . 1 .jar -rw-r--r-- 1 ceposta staff 2592519 Jul 16 14 : 50 camel-core- 2.12 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 207482 Jul 16 14 : 43 camel-cxf- 2.12 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 64726 Jul 16 14 : 50 camel-cxf-transport- 2.12 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 244731 Jul 16 14 : 50 camel-spring- 2.12 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 43947 Jul 16 14 : 50 camel-test- 2.12 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 71455 Jul 16 14 : 50 camel-test-spring- 2.12 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 62050 Jul 16 14 : 50 commons-logging- 1.1 . 3 .jar -rw-r--r-- 1 ceposta staff 1115924 Jul 16 14 : 50 cxf-api- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 204287 Jul 16 14 : 50 cxf-rt-bindings-soap- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 38847 Jul 16 14 : 50 cxf-rt-bindings-xml- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 408403 Jul 16 14 : 50 cxf-rt-core- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 129306 Jul 16 14 : 50 cxf-rt-databinding-jaxb- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 34276 Jul 16 14 : 50 cxf-rt-features-clustering- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 654099 Jul 16 14 : 50 cxf-rt-frontend-jaxrs- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 388669 Jul 16 14 : 50 cxf-rt-frontend-jaxws- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 67426 Jul 16 14 : 50 cxf-rt-frontend-simple- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 260274 Jul 16 14 : 50 cxf-rt-transports-http- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 97071 Jul 16 14 : 50 cxf-rt-transports-http-jetty- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 80014 Jul 16 14 : 50 cxf-rt-ws-addr- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 207480 Jul 16 14 : 50 cxf-rt-ws-policy- 2.7 . 0 .redhat- 610379 .jar -rw-r--r-- 1 ceposta staff 223298 Jul 16 14 : 50 geronimo-javamail_1.4_spec- 1.7 . 1 .jar -rw-r--r-- 1 ceposta staff 96323 Jul 16 14 : 50 geronimo-servlet_3.0_spec- 1.0 .jar -rw-r--r-- 1 ceposta staff 45024 Jul 16 14 : 50 hamcrest-core- 1.3 .jar -rw-r--r-- 1 ceposta staff 110928 Jul 16 14 : 50 javax.ws.rs-api- 2.0 -m10.jar -rw-r--r-- 1 ceposta staff 1112659 Jul 16 14 : 50 jaxb-impl- 2.2 . 6 .jar -rw-r--r-- 1 ceposta staff 21162 Jul 16 14 : 50 jetty-continuation- 8.1 . 14 .v20131031.jar -rw-r--r-- 1 ceposta staff 96122 Jul 16 14 : 50 jetty-http- 8.1 . 14 .v20131031.jar -rw-r--r-- 1 ceposta staff 104219 Jul 16 14 : 50 jetty-io- 8.1 . 14 .v20131031.jar -rw-r--r-- 1 ceposta staff 89923 Jul 16 14 : 50 jetty-security- 8.1 . 14 .v20131031.jar -rw-r--r-- 1 ceposta staff 357704 Jul 16 14 : 50 jetty-server- 8.1 . 14 .v20131031.jar -rw-r--r-- 1 ceposta staff 287680 Jul 16 14 : 50 jetty-util- 8.1 . 14 .v20131031.jar -rw-r--r-- 1 ceposta staff 245039 Jul 16 14 : 50 junit- 4.11 .jar -rw-r--r-- 1 ceposta staff 481535 Jul 16 14 : 50 log4j- 1.2 . 16 .jar -rw-r--r-- 1 ceposta staff 71487 Jul 16 14 : 50 neethi- 3.0 . 3 .jar -rw-r--r-- 1 ceposta staff 614152 Jul 16 14 : 50 org.osgi.compendium- 4.2 . 0 .jar -rw-r--r-- 1 ceposta staff 26176 Jul 16 14 : 50 slf4j-api- 1.6 . 6 .jar -rw-r--r-- 1 ceposta staff 9711 Jul 16 14 : 50 slf4j-log4j12- 1.6 . 6 .jar -rw-r--r-- 1 ceposta staff 335679 Jul 16 14 : 50 spring-aop- 3.2 . 5 .RELEASE.jar -rw-r--r-- 1 ceposta staff 612569 Jul 16 14 : 50 spring-beans- 3.2 . 8 .RELEASE.jar -rw-r--r-- 1 ceposta staff 866273 Jul 16 14 : 50 spring-context- 3.2 . 8 .RELEASE.jar -rw-r--r-- 1 ceposta staff 873608 Jul 16 14 : 50 spring-core- 3.2 . 8 .RELEASE.jar -rw-r--r-- 1 ceposta staff 196367 Jul 16 14 : 50 spring-expression- 3.2 . 8 .RELEASE.jar -rw-r--r-- 1 ceposta staff 457987 Jul 16 14 : 50 spring-test- 3.2 . 8 .RELEASE.jar -rw-r--r-- 1 ceposta staff 242436 Jul 16 14 : 50 spring-tx- 3.2 . 8 .RELEASE.jar -rw-r--r-- 1 ceposta staff 627339 Jul 16 14 : 50 spring-web- 3.2 . 5 .RELEASE.jar -rw-r--r-- 1 ceposta staff 182112 Jul 16 14 : 50 stax2-api- 3.1 . 1 .jar -rw-r--r-- 1 ceposta staff 482245 Jul 16 14 : 50 woodstox-core-asl- 4.2 . 0 .jar -rw-r--r-- 1 ceposta staff 186758 Jul 16 14 : 50 wsdl4j- 1.6 . 3 .jar -rw-r--r-- 1 ceposta staff 84091 Jul 16 14 : 50 xml-resolver- 1.2 .jar -rw-r--r-- 1 ceposta staff 165787 Jul 16 14 : 50 xmlschema-core- 2.1 . 0 .jar |
Теперь мы находим, какие jar-файлы отправляются в какие зависимости и создаем модули. Например, глядя выше, мы видим, что у camel-core есть зависимость от com.sun.xml.bind:jaxb-impl:jar:2.2.6
К счастью, это единственная зависимость, и это системная зависимость, которую уже обеспечивает JBoss EAP.
Поэтому все, что нам нужно скопировать в каталог нашего модуля JBoss — это зависимость org.apache.camel:camel-core:jar:2.12.0.redhat-610379
. Но где мы можем получить это? Ну, так как мы использовали зависимость: копия-зависимости, она должна быть просто в вашей папке назначения / зависимости.
Но официальный ответ: баночки с верблюжьими куратами Red Hat поставляются как часть JBoss Fuse .
Поэтому, если вы скачаете дистрибутив для JBoss Fuse и распакуете его, вы должны увидеть папку /extras
в этом дистрибутиве. Внутри этого дистрибутива находится архивный файл с именем apache-camel-2.12.0.redhat-610379.zip
. Если вы распакуете этот архив и проверите папку /lib
, у вас будут все компоненты и файлы Camel, которые поддерживает Red Hat.
Теперь, когда мы знаем, что camel-core — единственный jar-файл, который нам понадобится для модуля camel-core, давайте скопируем его в папку нашего модуля на EAP:
Скопируйте все зависимости и транзитивные зависимости в папку модуля
1
|
ceposta @postamachat (contract-first-camel-eap) $ cp target/dependency/camel-core- 2.12 . 0 .redhat- 610379 .jar $EAP_HOME/modules/org/apache/camel/core/main/ |
Создать module.xml
Теперь нам нужно добавить простой xml-дескриптор, чтобы EAP знал, что это допустимый модуль:
1
2
3
4
5
6
|
<? xml version = "1.0" encoding = "UTF-8" ?> < module xmlns = "urn:jboss:module:1.1" name = "org.apache.camel.core" > < resources > < resource-root path = "camel-core-2.12.0.redhat-610379.jar" /> </ resources > </ module > |
А теперь у вас есть EAP-модуль на camel-core
! Если у вас есть зависимости от других модулей, вы можете добавить их, например, так, но это необязательно для модуля Camel-Core (это всего лишь пример того, как это будет выглядеть для других модулей, которые будут нуждаться в этом):
1
2
3
4
5
6
7
|
< dependencies > < module name = "org.apache.commons.lang" /> < module name = "org.apache.commons.logging" /> < module name = "org.apache.commons.collections" /> < module name = "org.apache.commons.io" /> < module name = "org.apache.commons.configuration" /> </ dependencies > |
Включите модуль Camel-Core:
Последнее, что нужно сделать, — включить модуль в глобальном пути к классам. Для этого найдите автономный файл конфигурации и добавьте его в раздел <global-modules>
«Подсистемы EE»:
1
2
3
4
5
6
7
8
9
|
.... bunch of other stuff here.... < subsystem xmlns = "urn:jboss:domain:ee:1.1" > < global-modules > < module name = "org.apache.camel.core" slot = "main" /> </ global-modules > </ subsystem > .... bunch of other stuff here.... |
Теперь сделайте это для компонента camel-cxf (подсказка, это jar-файлы). ИЛИ, если у вас уже есть некоторые из ваших пользовательских модулей, и вы хотите разделить это на модули многократного использования, разделить их по технологии (spring, cxf, cxf) -транспорт и т. д.):
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[INFO] +- org.apache.camel:camel-cxf:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.camel:camel-spring:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | | \- org.springframework:spring-tx:jar: 3.2 . 8 .RELEASE:provided [INFO] | +- org.apache.camel:camel-cxf-transport:jar: 2.12 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.cxf:cxf-rt-frontend-jaxrs:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | +- javax.ws.rs:javax.ws.rs-api:jar: 2.0 -m10:provided [INFO] | | \- org.apache.cxf:cxf-rt-bindings-xml:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | +- org.apache.cxf:cxf-rt-frontend-jaxws:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | +- xml-resolver:xml-resolver:jar: 1.2 :provided [INFO] | | +- asm:asm:jar: 3.3 . 1 :provided [INFO] | | +- org.apache.cxf:cxf-rt-frontend-simple:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | \- org.apache.cxf:cxf-rt-ws-addr:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | \- org.apache.cxf:cxf-rt-ws-policy:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | | \- org.apache.neethi:neethi:jar: 3.0 . 3 :provided [INFO] | +- org.springframework:spring-core:jar: 3.2 . 8 .RELEASE:provided [INFO] | | \- commons-logging:commons-logging:jar: 1.1 . 3 :provided [INFO] | +- org.springframework:spring-beans:jar: 3.2 . 8 .RELEASE:provided [INFO] | +- org.springframework:spring-context:jar: 3.2 . 8 .RELEASE:provided [INFO] | | \- org.springframework:spring-expression:jar: 3.2 . 8 .RELEASE:provided [INFO] | +- org.apache.cxf:cxf-rt-features-clustering:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | \- org.apache.cxf:cxf-rt-bindings-soap:jar: 2.7 . 0 .redhat- 610379 :provided [INFO] | \- org.apache.cxf:cxf-rt-databinding-jaxb:jar: 2.7 . 0 .redhat- 610379 :provided |
Обратите внимание, что вы можете разделить различные сторонние зависимости на их собственные модули. (Например, Spring Framework, Camel Spring и т. Д.)
Разверните наш проект в EAP:
Теперь из командной строки перейдите в корень исходного кода для примера проекта и выполните сборку и развертывание:
1
2
3
|
ceposta @postamachat $ mvn clean install ceposta @postamachat $ mvn jboss-as:deploy-only |
Куда пойти дальше?
Если у вас возникли проблемы с вышеуказанным, я с радостью помогу или обратитесь в службу поддержки Red Hat для более быстрого ответа!
Ссылка: | Верблюд на JBoss EAP с пользовательскими модулями от нашего партнера JCG Кристиана Поста в блоге |