Первые 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> |