Первые 2 шага на самом деле не относятся к конкретным Broadleaf, но упоминаются, чтобы облегчить выполнение (копирование / вставка) шагов.
Шаг № 1: Настройте источники данных в JBoss AS.
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
|
< datasource jta = "true" jndi-name = "java:jboss/datasources/BroadleafDS" pool-name = "BroadleafDS_Pool" enabled = "true" use-java-context = "true" use-ccm = "true" > < connection-url >jdbc:mysql://localhost:3306/broadleaf</ connection-url > < driver >mysql</ driver > < security > < user-name >root</ user-name > < password >admin</ password > </ security > < timeout > < idle-timeout-minutes >0</ idle-timeout-minutes > < query-timeout >600</ query-timeout > </ timeout > </ datasource > < datasource jta = "true" jndi-name = "java:jboss/datasources/BroadleafSecureDS" pool-name = "BroadleafSecureDS_Pool" enabled = "true" use-java-context = "true" use-ccm = "true" > < connection-url >jdbc:mysql://localhost:3306/broadleaf</ connection-url > < driver >mysql</ driver > < security > < user-name >root</ user-name > < password >admin</ password > </ security > < timeout > < idle-timeout-minutes >0</ idle-timeout-minutes > < query-timeout >600</ query-timeout > </ timeout > </ datasource > < datasource jta = "true" jndi-name = "java:jboss/datasources/BroadleafCmsDS" pool-name = "BroadleafCmsDS_Pool" enabled = "true" use-java-context = "true" use-ccm = "true" > < connection-url >jdbc:mysql://localhost:3306/broadleaf</ connection-url > < driver >mysql</ driver > < security > < user-name >root</ user-name > < password >admin</ password > </ security > < timeout > < idle-timeout-minutes >0</ idle-timeout-minutes > < query-timeout >600</ query-timeout > </ timeout > </ datasource > |
Шаг № 2: Обновите файл core / src / main / resources / META-INF / persistence.xml следующим образом, чтобы использовать источники данных, настроенные в JBossAS7.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
<? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version = "2.0" > < persistence-unit name = "blPU" transaction-type = "RESOURCE_LOCAL" > < non-jta-data-source >java:jboss/datasources/BroadleafDS</ non-jta-data-source > < exclude-unlisted-classes /> </ persistence-unit > < persistence-unit name = "blSecurePU" transaction-type = "RESOURCE_LOCAL" > < non-jta-data-source >java:jboss/datasources/BroadleafSecureDS</ non-jta-data-source > < exclude-unlisted-classes /> </ persistence-unit > < persistence-unit name = "blCMSStorage" transaction-type = "RESOURCE_LOCAL" > < non-jta-data-source >java:jboss/datasources/BroadleafCmsDS</ non-jta-data-source > < exclude-unlisted-classes /> </ persistence-unit > </ persistence > |
Шаг № 3: Обновите сайт / src / main / webapp / WEB-INF / applicationContext.xml следующим образом:
1
2
3
4
5
6
7
8
9
|
< bean id = "blMergedDataSources" class = "org.springframework.beans.factory.config.MapFactoryBean" > < property name = "sourceMap" > < map > < entry key = "java:jboss/datasources/BroadleafDS" value-ref = "webDS" /> < entry key = "java:jboss/datasources/BroadleafSecureDS" value-ref = "webSecureDS" /> < entry key = "java:jboss/datasources/BroadleafCmsDS" value-ref = "webStorageDS" /> </ map > </ property > </ bean > |
Теперь, если вы развернете приложение, вы получите следующую ошибку:
ОШИБКА Ошибка создания бина с именем «blMergedDataSources», определенного в ресурсе, загруженном из байтового массива: невозможно разрешить ссылку на бин «webDS» при установке свойства бина «sourceMap» с ключом [TypedStringValue: значение, тип цели [null]]; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем ‘webDS’: пост-обработка объекта FactoryBean завершилась неудачно; Вложенное исключение: java.lang.IllegalArgumentException: предупреждение не соответствует имени этого типа: org.broadleafcommerce.profile.core.service.CustomerAddressService [Xlint: invalidAbsoluteTypeName]
Шаг № 4: Создайте jboss-deploy-structure.xml в папке site / src / main / webapp / WEB-INF /.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
< jboss-deployment-structure xmlns = "urn:jboss:deployment-structure:1.0" > < deployment > < dependencies > < module name = "org.jboss.ironjacamar.jdbcadapters" /> </ dependencies > < exclusions > < module name = "org.apache.commons.logging" /> < module name = "org.apache.log4j" /> < module name = "org.jboss.logging" /> < module name = "org.jboss.logmanager" /> < module name = "org.jboss.logmanager.log4j" /> < module name = "org.slf4j" /> </ exclusions > </ deployment > </ jboss-deployment-structure > |
Теперь, если вы попытаетесь развернуть приложение, вы получите следующую ошибку, потому что JBossAS7 поставляется с Hibernate4, а приложение использует некоторые функции hibernate3.
1
2
3
4
5
6
7
8
|
@CollectionOfElements @JoinTable(name = "BLC_CATEGORY_IMAGE", joinColumns = @JoinColumn(name = "CATEGORY_ID")) @MapKey(columns = { @Column(name = "NAME", length = 5, nullable = false) }) @Column(name = "URL") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blStandardElements") @BatchSize(size = 50) @Deprecated protected Map< String , String> categoryImages = new HashMap< String , String>(10); |
org.hibernate.MappingException: Не удалось определить тип для: java.util.Map, для таблицы: BLC_CATEGORY, для столбцов: [org.hibernate.mapping.Column (URL)]
Итак, давайте установим модуль hibernate3 в JBossAS7 и используем его.
Шаг № 5: Установите модуль Hibernate 3 в JBoss AS 7.
Скопируйте следующие файлы jar (вы можете получить их из файла site.war) в папку jboss-as-7.1.1.FINAL/modules/org/hibernate/3/ .
1
|
antlr-2.7.6.jar |
1
|
commons-collections-3.2.1.jar |
1
|
dom4j-1.6.1.jar |
1
|
hibernate-commons-annotations-3.2.0.Final.jar |
1
|
hibernate-core-3.6.10.Final.jar |
1
|
hibernate-entitymanager-3.6.10.Final.jar |
1
|
javassist-3.16.1-GA.jar |
Создайте module.xml в папке jboss-as-7.1.1.FINAL/modules/org/hibernate/3/ .
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
|
<? xml version = "1.0" encoding = "UTF-8" ?> < module xmlns = "urn:jboss:module:1.0" name = "org.hibernate" slot = "3" > < resources > < resource-root path = "hibernate-core-3.6.10.Final.jar" /> < resource-root path = "javassist-3.16.1-GA.jar" /> < resource-root path = "antlr-2.7.6.jar" /> < resource-root path = "commons-collections-3.2.1.jar" /> < resource-root path = "dom4j-1.6.1.jar" /> <!-- Insert other Hibernate 3 jars to be used here --> < resource-root path = "hibernate-commons-annotations-3.2.0.Final.jar" /> < resource-root path = "hibernate-entitymanager-3.6.10.Final.jar" /> </ resources > < dependencies > < module name = "org.jboss.as.jpa.hibernate" slot = "3" /> < module name = "asm.asm" /> < module name = "javax.api" /> < module name = "javax.persistence.api" /> < module name = "javax.transaction.api" /> < module name = "javax.validation.api" /> <!-- <module name="org.apache.ant"/> --> < module name = "org.infinispan" optional = "true" /> < module name = "org.javassist" /> < module name = "org.slf4j" /> </ dependencies > </ module > |
Шаг № 6: Скажите JBoss использовать модуль hibernate 3. Обновите ядро / src / main / resources / META-INF / persistence.xml
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
|
<? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version = "2.0" > < persistence-unit name = "blPU" transaction-type = "RESOURCE_LOCAL" > < non-jta-data-source >java:jboss/datasources/BroadleafDS</ non-jta-data-source > < exclude-unlisted-classes /> < properties > < property name = "jboss.as.jpa.providerModule" value = "org.hibernate:3" /> < property name = "jboss.as.jpa.managed" value = "false" /> </ properties > </ persistence-unit > < persistence-unit name = "blSecurePU" transaction-type = "RESOURCE_LOCAL" > < non-jta-data-source >java:jboss/datasources/BroadleafSecureDS</ non-jta-data-source > < exclude-unlisted-classes /> < properties > < property name = "jboss.as.jpa.providerModule" value = "org.hibernate:3" /> < property name = "jboss.as.jpa.managed" value = "false" /> </ properties > </ persistence-unit > < persistence-unit name = "blCMSStorage" transaction-type = "RESOURCE_LOCAL" > < non-jta-data-source >java:jboss/datasources/BroadleafCmsDS</ non-jta-data-source > < exclude-unlisted-classes /> < properties > < property name = "jboss.as.jpa.providerModule" value = "org.hibernate:3" /> < property name = "jboss.as.jpa.managed" value = "false" /> </ properties > </ persistence-unit > </ persistence > |