您的位置:首页 > 运维架构 > Linux

jbpm-6.3.0.Final-installer-full在Windows上的部署、数据库由H2切换为MySql、Linux上的部署全过程

2017-06-11 18:09 465 查看
jbpm-6.3.0.Final-installer-full在Windows上的部署、数据库由H2切换为MySQLLinux上的部署全过程

Andy 2016-4

前提:

1,从官网上下载了jbpm-6.3.0.Final-installer-full.zip,300多M

2,部署的OS上安装了Ant,我用的是Ant1.8.1

3,部署的OS上安装了JDK1.7,注意是JDK1.7。

原因是1.6版本低不能用,而1.8默认的JavaScript引擎是Nashorn,与1.7默认使用的Rhino不一样。所以在linux下部署时若使用1.8,下面有些步骤会不适用。

PS:不同操作系统(Windows/Linux,32位,64位)JDK不一样,注意别下载错了

4,我的目的是在网站上去使用和管理工作流,所以没有涉及eclipse及jbpm的eclipse插件的下载、安装;

5,我的部署环境是内网,Windows需要通过代理访问外网,所以jbpm部署过程中想要访问外网时会试图获取一些资源,这时就得想办法在本地准备好,或者设置上网代理。在Linux上部署时,则完全没有外网访问条件,需要将所有下载依赖的内容准备好。

6,jbpm-6.3.0.Final-installer-full默认使用wildfly作为应用服务器,所以如果对它或者jboss熟悉,那么会顺利很多。

7,jbpm-6.3.0.Final-installer-full默认使用H2数据库。

=====================================================

1,jbpm-6.3.0.Final-installer-full在Windows上的部署使用:

1.1,jbpm-6.3.0.Final-installer-full.zip解压,得到jbpm-installer目录;

1.2,修改jbpm-installer/build.xml文件,禁止hibernate 相关的4个jar包的下载。否则ant install.demo.noeclipse时,会因为下载失败而出错。

目录里其实已经有此4个jar包,现成的。但build.xml文件还是会试图连网下载,所以需要修改。

修改:

修改前:

    <get src="${hibernate4.download.url}/hibernate-core/4.3.11.Final/hibernate-core-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

    <get src="${hibernate4.download.url}/hibernate-entitymanager/4.3.11.Final/hibernate-entitymanager-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

    <get src="${hibernate4.download.url}/hibernate-envers/4.3.11.Final/hibernate-envers-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

    <get src="${hibernate4.download.url}/hibernate-infinispan/4.3.11.Final/hibernate-infinispan-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

   

修改后(注释掉):

<!-- Andy: delete 4 lines.

    <get src="${hibernate4.download.url}/hibernate-core/4.3.11.Final/hibernate-core-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

    <get src="${hibernate4.download.url}/hibernate-entitymanager/4.3.11.Final/hibernate-entitymanager-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

    <get src="${hibernate4.download.url}/hibernate-envers/4.3.11.Final/hibernate-envers-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

    <get src="${hibernate4.download.url}/hibernate-infinispan/4.3.11.Final/hibernate-infinispan-4.3.11.Final.jar" dest="${install.home}/lib/hibernate4" />

     -->

1.3,修改jbpm-installer/build.xml文件,为JVM增加上网代理。(注意替换为有效IP和端口)

类似于1,ant start.demo.noeclipse中启动wildfly 时,会访问Git的一些网址(HTTPS),因此若在办公代理上网环境,要在相应位置为Jboss的JVM增加代理信息:

修改前:

      <env key="JAVA_OPTS" value="-XX:MaxPermSize=256m -Xms256m -Xmx512m " />

修改后:

<!-- http and https proxy-info is added by Andy -->

      <env key="JAVA_OPTS" value="-XX:MaxPermSize=256m -Xms256m -Xmx512m -Dhttp.proxyHost=<yourIP> -Dhttp.proxyPort=<yourPort> -Dhttps.proxyHost=<yourIP2> -Dhttps.proxyPort=<yourPort2>" />

详情参考:
http://stackoverflow.com/questions/22054047/jbpm-console-not-working-failed-to-start-service-jboss-deployment-unit-jbpm-c
帖子精华摘录如下:

As salaboy said, this problem happens if you don't have a direct internet connection or accessing internet through a proxy.

If you don't have an internet connection, then follow the answer by dleerob.

If you are behind a proxy, then give the proxy details as Java VM parameters in build.xml

In build.xml, find the target named start.jboss . There are two exec commands in this target; one for windows and one for linux. Based on your environment, specify the proxy details in <env key="JAVA_OPTS" parameter using the following JVM options with your proxy and port.

-Dhttp.proxyHost=proxyname -Dhttp.proxyPort=port-Dhttps.proxyHost=proxyname -Dhttps.proxyPort=port

1.4,Ant目录下的ant.bat也增加代理信息

在ant.bat文件的开始加入下面内容(注意替换为有效IP和端口)

set ANT_OPTS=-Dhttp.proxyHost=<yourIP> -Dhttp.proxyPort=<yourPort> -Dhttps.proxyHost=<yourIP2> -Dhttps.proxyPort=<yourPort2>

1.4 至此,Windows下的配置修改就算完成了,可以尝试安装、启动服务

在jbpm-installer目录下执行:

安装:ant install.demo.noeclipse

启动:ant start.demo.noeclipse

停止:ant stop.demo

反安装:ant clean.demo

=====================================================

2,jbpm-6.3.0.Final-installer-full数据库由H2切换为mysql

主要参考文档是官方帮助的3.6节。

2.1,准备好自己的mysql 数据库:URL、name/password

务必注意:自己的MySQL库,增删改查的sql语句要求不能区分大小写。如果Mysql安装在Windows上,就没有这问题。但通常是安装在Linux上,所以务必注意。否则部署后使用时会找不到表……

如何配置MySQL不区分大小写,网文一大片,随便搜索。

2.2,修改jbpm-installer/db/jbpm-persistence-JPA2.xml,将hibernate.dialect修改为mysql

修改前:

 <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />

修改后:

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

2.3,修改下面两个文件的数据源信息(这两个文件的内容在安装时,会被Ant放到wildfly的standalone/configuration中)

jbpm-installer/standalone-full-wildfly-8.1.0.Final.xml

jbpm-installer/standalone-wildfly-8.1.0.Final.xml

两个文件作同样的修改。

【注:jbpm-installer有若干条类似的文件,修改哪个,取决于使用的应用服务器。安装包默认使用wildfly,所以修改上面两个文件。】

修改前:

                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>

                    <driver>h2</driver>

                    <security>

                        <user-name>sa</user-name>

                        <password>sa</password>

                    </security>

                </datasource>

                

                <datasource jta="true" jndi-name="java:jboss/datasources/jbpmDS" pool-name="H2DS" enabled="true" use-java-context="true" use-ccm="true">

                    <connection-url>jdbc:h2:tcp://localhost/~/jbpm-db;MVCC=TRUE</connection-url>

                    <driver>h2</driver>

                    <security>

                        <user-name>sa</user-name>

                    </security>

                </datasource>

                <drivers>

                    <driver name="h2" module="com.h2database.h2">

                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

                    </driver>

                </drivers>

修改后:

                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

                    <connection-url>jdbc:mysql://<yourMysqlIP:3306/<yourDBName>?useUnicode=true&characterEncoding=utf8</connection-url>

                        <driver>mysql</driver>

                        <security>

                            <user-name>user</user-name>

                            <password>pass</password>

                    </security>

                </datasource>

                                <datasource jta="true" jndi-name="java:jboss/datasources/jbpmDS" pool-name="MySQLDS" enabled="true" use-java-context="true" use-ccm="true">

                    <connection-url>jdbc:mysql://<yourMysqlIP:3306/<yourDBName>?useUnicode=true&characterEncoding=utf8</connection-url>

                    <driver>mysql</driver>

                    <security>

                        <user-name>user</user-name>

                        <password>pass</password>

                    </security>

                </datasource>

                <drivers>

                    <driver name="mysql" module="com.mysql">

                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>

                    </driver>

                </drivers>

            </datasources>

2.4,修改jbpm-installer/build.properties的使用数据库,注释掉H2,放出来Mysql

修改后:

# default is H2

#H2.version=1.3.168

#db.name=h2

#db.driver.jar.name=h2-${H2.version}.jar

#db.driver.download.url=http://repo1.maven.org/maven2/com/h2database/h2/${H2.version}/h2-${H2.version}.jar

#other options are:

#mysql

db.name=mysql

db.driver.module.prefix=com/mysql

db.driver.jar.name=mysql-connector-java-5.1.18.jar

db.driver.download.url=https://repository.jboss.org/nexus/service/local/repositories/central/content/mysql/mysql-connector-java/5.1.18/mysql-connector-java-5.1.18.jar

2.5,修改jbpm-installer/db/mysql_module.xml

将其中的MySQL驱动jar包名称改为与实际使用的一致:

修改前:

 resource-root path="mysql-connector-java.jar"

修改后:

 resource-root path="mysql-connector-java-5.1.18.jar"

=====================================================

3,jbpm-6.3.0.Final-installer-full在Linux上的部署使用:

综述:因为我的Linux无法访问外网,所以所有的网络访问行为都要禁止。

前提:

将步骤1中的全部内容执行完,或要使用MySQL,步骤2中的全部内容也要执行。

3.1,从别的途径下载mysql-connector-java-5.1.18.jar,放到jbpm-installer/db/driver/mysql-connector-java-5.1.18.jar目录下

3.2,如果Linux上没有JDK和Ant,分别下载、解压,并配置PATH、CLASSPATH:

下面的示例临时设置PATH、CLASSPATH(退出Linux terminal窗口后即失效,永久配置上网搜):

export JAVA_HOME=/opt/app/jbpm_test/jdk1.7.0_80

export PATH=$JAVA_HOME/bin:/opt/app/jbpm_test/apache-ant-1.8.1/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH

3.3,修改jbpm-installer/build.xml文件,禁止jbpm示例的下载:

修改前

-Dorg.kie.demo=true

修改后

-Dorg.kie.demo=false

这个“示例”是什么,起什么作用,还在研究。

3.4,    修改下面两个文件的访问允许信息,使得wildfly不仅在本机可以访问(localhost)其他机器也可以访问。(这两个文件的内容在安装时,会被Ant放到wildfly的standalone/configuration中)

jbpm-installer/standalone-full-wildfly-8.1.0.Final.xml

jbpm-installer/standalone-wildfly-8.1.0.Final.xml

两个文件作同样的修改。

3.4.1 修改一:增加

        <interface name="any">

            <any-ipv4-address/>

        </interface>

修改前:

<interfaces>

        <interface name="management">

            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

        </interface>

        <interface name="public">

            <inet-address value="${jboss.bind.address:127.0.0.1}"/>

        </interface>

        <!-- TODO - only show this if the jacorb subsystem is added  -->

        <interface name="unsecure">

            <!--

              ~  Used for IIOP sockets in the standard configuration.

              ~                  To secure JacORB you need to setup SSL 

              -->

            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>

        </interface>

</interfaces>

修改后:

<interfaces>

        <interface name="management">

            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

        </interface>

        <interface name="public">

            <inet-address value="${jboss.bind.address:127.0.0.1}"/>

        </interface>

        <interface name="any">

            <any-ipv4-address/>

        </interface>

        <!-- TODO - only show this if the jacorb subsystem is added  -->

        <interface name="unsecure">

            <!--

              ~  Used for IIOP sockets in the standard configuration.

              ~                  To secure JacORB you need to setup SSL 

              -->

            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>

        </interface>

    </interfaces>

3.4.2 修改二:修改默认public为新增的any:

修改前:

 <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

修改后:

 <socket-binding-group name="standard-sockets" default-interface="any" port-offset="${jboss.socket.binding.port-offset:0}">

3.5,Wildfly配置修改,删除掉JDK1.7中不包含的NashornScriptEngineFactory(否则wildfly启动时报Error):

(注1:JDK1.8中不包含RhinoScriptEngineFactory,JDK1.7中不包含NashornScriptEngineFactory

注2:Windows无此问题)

wildfly-8.1.0.Final/modules/system/layers/base/sun/jdk/main/service-loader-resources/META-INF/services/javax.script.ScriptEngineFactory

修改前:

com.sun.script.javascript.RhinoScriptEngineFactory

jdk.nashorn.api.scripting.NashornScriptEngineFactory

修改后:

com.sun.script.javascript.RhinoScriptEngineFactory

参考文档:https://developer.jboss.org/thread/239467?start=0

主要内容:

Re: Wildfly Scripting Engine (Rhino vs Nashorn)

 Tomaz Cerar

Master

Tomaz Cerar 2014-4-3 下午7:02 (回复 Brandon Lederer)

hmm, we are probably missing few paths in our sun.jdk module to make this work properly.

 

add open WILDFLY_HOME\modules\system\layers\base\sun\jdk\main\module.xml

 

missing paths.

 

other thing you can do is open

WILDFLY_HOME\modules\system\layers\base\sun\jdk\main\service-loader-resources\META-INF\services\javax.script.ScriptEngineFactory

and remove the one that gives you problems.

3.6 至此大功告成,可以执行安装、启动流程了:

在jbpm-installer目录下执行:

安装:ant install.demo.noeclipse

启动:ant start.demo.noeclipse

停止:ant stop.demo

反安装:ant clean.demo

3.7 访问http://<yourIP>:8080/jbpm-console,使用admin/admin登录

=====================================================

4 后记:注意事项:

4.1 经常查看Wildfly的启动日志,根据关键词排错;

4.2 频繁地ant start... ant stop...,有时候wildfly进程未能正常结束。所以有必要经常查看wildfly进程,以及系统端口的占用情况、wildfly-8.1.0.Final\standalone\deployments下的部署情况;

4.3 (可选)如果配置文件中一些下载项未去掉,安装过程中Ant会尝试去某处的git 库下载依赖内容,这时它需要使用9418端口。此时要确定本机的9418未占用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jbpm