broadleaf commerce到mysql和tomcat的迁移
近期刚刚接触broadleaf commerce, 一个电商站点的开源模版。详细的执行和配置能够參考链接:点击打开链接
而该模版是在jetty容器下执行的,数据库是HSQL。官方站点上给出了怎样将数据库迁移到mysql以及把项目project部署在tomcat中所须要的配置,可是过程不甚具体,网上这方面的资源也不是非常多,所以楼主就打算写这篇博客作为一个总结。
1.数据库的迁移(HSQL到MYSQL)
(a)打开DemoSiteproject的根文件夹下pom.xml文件,在<dependencyManagement>区域中加入:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
(b)分别在admin和site目录中找到pom.xml打开并在<dependencies>
区域中加入:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
(c)在mysql数据库中加入database名为broadleaf
(d)改动admin/src/main/webapp/WEB-INF/jetty-env.xml和site/src/main/webapp/WEB-INF/jetty-env.xml文件。将其内容改为
<New id="webDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/web</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/broadleaf</Set>
<Set name="username">root</Set>
<Set name="password">123</Set>
</New>
</Arg>
</New> <New id="webSecureDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/secure</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/broadleaf</Set>
<Set name="username">root</Set>
<Set name="password">123</Set>
</New>
</Arg>
</New> <New id="webStorageDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/storage</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/broadleaf</Set>
<Set name="username">root</Set>
<Set name="password">123</Set>
</New>
</Arg>
</New>
(e)分别打开admin/src/main/webapp/META-INF和
admin/src/main/webapp/META-INF
中的context.xml,将内容替换例如以下(数据库相关的配置信息如username和password请依据自身的环境作对应的改动):
<? xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/web"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
testWhileIdle="true"
testOnBorrow="true"
testOnReturn="false"
validationQuery="SELECT 1"
timeBetweenEvictionRunsMillis="30000"
maxActive="15"
maxIdle="10"
minIdle="5"
removeAbandonedTimeout="60"
removeAbandoned="false"
logAbandoned="true"
minEvictableIdleTimeMillis="30000"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
username="root"
password="123"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/broadleaf"/> <Resource name="jdbc/storage"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
testWhileIdle="true"
testOnBorrow="true"
testOnReturn="false"
validationQuery="SELECT 1"
timeBetweenEvictionRunsMillis="30000"
maxActive="15"
maxIdle="10"
minIdle="5"
removeAbandonedTimeout="60"
removeAbandoned="false"
logAbandoned="true"
minEvictableIdleTimeMillis="30000"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
username="root"
password="123"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/broadleaf"/> <Resource name="jdbc/secure"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
testWhileIdle="true"
testOnBorrow="true"
testOnReturn="false"
validationQuery="SELECT 1"
timeBetweenEvictionRunsMillis="30000"
maxActive="15"
maxIdle="10"
minIdle="5"
removeAbandonedTimeout="60"
removeAbandoned="false"
logAbandoned="true"
minEvictableIdleTimeMillis="30000"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
username="root"
password="123"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/broadleaf"/>
</Context>
(e)打开core/src/main/resources/runtime-properties/common-shared.properties
文件,将下面的三条
blPU.hibernate.dialect=org.hibernate.dialect.HSQLDialect
blCMSStorage.hibernate.dialect=org.hibernate.dialect.HSQLDialect
blSecurePU.hibernate.dialect=org.hibernate.dialect.HSQLDialect
分别替换为:
blPU.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
blSecurePU.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
blCMSStorage.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
(f)打开DemoSite根文件夹下的build.properties,将例如以下内容
ant.hibernate.sql.ddl.dialect=org.hibernate.dialect.HSQLDialect ant.blPU.url=jdbc:hsqldb:hsql://localhost/broadleaf
ant.blPU.userName=sa
ant.blPU.password=null
ant.blPU.driverClassName=org.hsqldb.jdbcDriver ant.blSecurePU.url=jdbc:hsqldb:hsql://localhost/broadleaf
ant.blSecurePU.userName=sa
ant.blSecurePU.password=null
ant.blSecurePU.driverClassName=org.hsqldb.jdbcDriver ant.blCMSStorage.url=jdbc:hsqldb:hsql://localhost/broadleaf
ant.blCMSStorage.userName=sa
ant.blCMSStorage.password=null
ant.blCMSStorage.driverClassName=org.hsqldb.jdbcDriver
依据自己数据库的配置改动为:
ant.hibernate.sql.ddl.dialect=org.hibernate.dialect.MySQL5InnoDBDialect ant.blPU.url=jdbc:mysql://localhost:3306/broadleaf
ant.blPU.userName=root
ant.blPU.password=123
ant.blPU.driverClassName=com.mysql.jdbc.Driver ant.blSecurePU.url=jdbc:mysql://localhost:3306/broadleaf
ant.blSecurePU.userName=root
ant.blSecurePU.password=123
ant.blSecurePU.driverClassName=com.mysql.jdbc.Driver ant.blCMSStorage.url=jdbc:mysql://localhost:3306/broadleaf
ant.blCMSStorage.userName=root
ant.blCMSStorage.password=123
ant.blCMSStorage.driverClassName=com.mysql.jdbc.Driver
这样数据库的迁移就完毕了。
2.server的迁移(从jetty到tomcat7)
(a)在site和admin文件夹下的pom.xml文件的中<plugins>区域中分别加入:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<warSourceDirectory>${webappDirectory}</warSourceDirectory>
<path>/</path>
<port>${httpPort}</port>
<httpsPort>${httpsPort}</httpsPort>
<keystoreFile>${webappDirectory}/WEB-INF/blc-example.keystore</keystoreFile>
<keystorePass>broadleaf</keystorePass>
<password>broadleaf</password>
</configuration>
</plugin>
(b)在eclipse中右键DemoSiteproject,先后执行Run As里面的Maven clean和Maven install,成功后就会在DemoSite中的admin和site的target目录中有对应的war包生成,楼主生成的两个war包名为admin.war和zk.war。
(c)楼主的环境是ubuntu。tomcatserver中webapps的路径为/var/lib/tomcat7/webapps,将admin和zk.war复制到该文件夹下,然后重新启动tomcatserver:
sudo /etc/init.d/tomcat7 restart
看到/var/log/tomcat7/catalina.out文件报错例如以下:
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:268)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:128)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2105)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1981)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1947)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1932)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1326)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
... 4 more
百度了以后得知是内存溢出的问题,详细的解决方式例如以下:
ubuntu中改动catalina.sh文件(楼主该文件的路径是/usr/share/tomcat7/bin/catalina.sh),在文件首行加入例如以下内容:
JAVA_OPTS='-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M' #注意:单引號不能省略
windows中改动catalina.bat文件。在第一行加入例如以下内容:
set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M #注意:无单引號
(d)依照(c)中改动完毕后再重新启动tomcatserver:
sudo /etc/init.d/tomcat7 restart
就能够在浏览器中正常打开电商页面:localhost:8080/zk和后台管理页面:localhost:8080/admin了,往tomcatserver的迁移也大功告成啦。
最新文章
- PHP数学函数
- 微信开发 -- 搭建基于ngrok的微信本地调试环境
- Linux 进程间通信(二) 管道
- 2015安徽省赛 B.求和
- Android大图片裁剪终极解决方案(上:原理分析)
- angular form-data文件上传
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)D拿糖果
- Linux的启动流程
- Android学习笔记:使用ViewPager组件实现图片切换
- C# WinForm多线程(三)Control.Invoke
- ajax提交到后台是中文乱码
- Python中的元类(metaclass)
- JavaBean命名规范
- Exp2 后门原理与实践
- [模板] 数学基础:快速幂/乘/逆元/exGCD/(ex)CRT/(ex)Lucas定理
- C# 字符串转为DateTime类型
- Linux 多线程 - 线程异步与同步机制
- 【转】WPF自定义控件与样式(2)-自定义按钮FButton
- RecyclerView错误
- November 10th, 2017 Week 45th Friday
热门文章
- 怎么在windows上安装 ansible How to install ansible to my python at Windows
- Mac OS安装octave出现的问题-&#39;error:terminal type set to &#39;unknown&#39;的解决&#39;
- Struts2 之 实现文件上传(多文件)和下载
- 淘宝ip地址库接口会导致TTFB时间变长,网站打开速度变慢
- Android sensor 系统框架 (一)
- Android开发笔记(8)——调用子Activity
- [Windows Server 2012] PHPWind安全设置
- quartz 数据库表含义解释
- 我所理解的Android和iOS上的View
- Typescript编译设置