随笔-67  评论-522  文章-0  trackbacks-0
    大象刚刚接触jBPM,经过这几天的折腾,终于把jbpm-console这个项目在Tomcat6上布署成功了,现在把这几天来的学习经验拿出来和大家分享一下。(结尾处有相关JAR包和MySQL及SQL Server 2000脚本下载)
    系统环境:windowsXP-SP2  JDK1.5.0_09  jbpm-jpdl-3.2.2  MySQL5.0.27  Tomcat6.0.10  MSSQL 2000
    1、安装JDK1.5.0_09

       不必一定要按我的版本来安装,不过至少JDK应该在1.5以上,JDK安装好以后,设置PATHCLASSPATH环境变量。
    2、安装Tomcat6.0.10
       这个没什么好说的,请用6.0的版本,因为大象没在5.0或5.5上测试过,而且这几个版本之间有很大的不同,为了能尽快上手,还是按照我写的来吧。^_^ 
    3、安装MySQL5.0.27
       MySQL安装中采用默认安装即可,字符集不用设置为GB2312GBK,这样做比较通用(大象用的MySQL没有设置)。
    4、安装Ant-1.7.0
       apache网站上下载Ant,然后解压,设置PATH环境变量,在CMD中键入ant -version 如果看到

       Apache Ant version 1.7.0 compiled on December 13 2006  那说明你的PATH环境已经设置好了。)
    5、安装jbpm-jpdl-3.2.2
       下载jbpm-jpdl-suite-3.2.2,然后解压就行,直接放在根目录下,比如:D:\jbpm-jpdl-3.2.2,这个版本是包含所有的一整套工具,目录下主要包含以下几个子目录:
       config —— jBPMHibernatelog4j的配置文件
       db ——
各种数据库的SQL语句
       deploy ——
已经打包好的war
       designer —— jBPM
Eclipse插件,具体在eclipse子目录中
       doc —— API
文档及用户使用向导
       examples —— jBPM
自带的例子程序
       lib ——
依赖的第三方依赖类库
       server ——
一个已经配置好了的基于JBossjBPM示例
       src —— jBPM的源代码
       jbpm-jpdl-suite-3.2.2的下载地址:http://sourceforge.net/project/showfiles.php?group_id=70542
                注意看下面一个链接:View older releases from the f) jBPM jPDL 3 package » 这是jbpm以前的版本
        6、安装Eclipse3.2.1MyEclipse5.1.0GA
               我使用的是一种整合版本,就是解压后可以直接使用,eclipsemyeclipse已经整合好了(嘿嘿,感觉非常方便,我自己还做了一个Eclipse3.3MyEclipse6.0的整合版,详情请看:详解Eclipse+MyEclipse完全绿色版制作方法),版本比我的高应该没关系,虽然没试过,但网上有很多人都在高版本上做过,应该没问题。这里就不说安装方法了,网上有很多相关资料。
   7、安装jbpm开发插件
      虽然布署jbpm-console这个项目不需要用到开发插件,但为了以后的开发,在这里我还是说一下,大象用的版本是3.0.13,为什么使用这个版本呢?因为我试过最新的3.1.3.sp2版,里面可视化编辑流程里左下角没有swimlanes标签,而3.0.13的版本中却有。
      3.0.13的下载地址:http://sourceforge.net/project/showfiles.php?group_id=70542&package_id=116692 这个页面可以找到所有的插件版本,当然包括最新版。
      下面来说下我的安装方法:

       看到这红线框的两个文件夹了吧,大象前面说了,我用的是一种整合版本,解压后就可以直接用了,所以这两个文件夹早就已经存在了,所以如果你们要用的话就像这样建两个文件夹吧,ThirdPlugins是放第三方插件的,Links是放ini配置文件的,下面都会有详细介绍。
       将下载的jbpm-gpd-3.0.13解压,复制整个eclipse文件夹,进入ThirdPlugins下,新建一文件夹,命名jbpm-gpd-3.0.13,再在此目录下粘贴eclipse文件夹
 
       另外还需要将plugins目录下的jar包作一下修改,只保留如下两个jar包,因为其它几个jar包在MyEclipse中也有,启动eclipse之后会发生冲突,而且千万不要想当然的,在myeclipse中把同名的jar包用高版本替换,不然你会发现启动之后全是错误,嘿嘿,大象试过,有着血一样的教训,请大家千万不要重蹈覆辙。
 
       此文件内容为:path=ThirdPlugins/jbpm-gpd-3.0.13
       OK,到此,插件安装已经全部完成,另外还需要在eclipse中对jBPM作一下设置,同样为了以后开发作准备。
       启动eclipse,点击Windows->Preference,中文版为"窗口"->"选项",可以看到:
 
       点击Add,选择Search...找到你解压的jbpm-jpdl-3.2.2文件夹,然后填写Name,点击OK。回到主界面,此时还要勾选Name下的复选框,点击Apply

 
       Server Deployment里面的东西是用来布署流程用的,前提是你得先发布好jbpm-console控制台这个程序,保证这个程序跑起来没有问题,否则是不会成功的。8080端口号和你服务器保持一致,如TomcatJBoss,另外布署一个新流程时,一定要先启动服务器。jbpm-console这个名字是默认发布到服务器上的名字,比如Tomcat中,webapps下使用的名字和这个要一样,那个变了,这个也要跟着变,还是保持默认就行。upload不要作修改,这些其实与布署jbpm-console应用没有多大关系,大家看看就行。

    8、布署jbpm-console
       jbpm-jpdl-3.2.2\deploy目录下可以看到jbpm-console.warbuild.xml(当然还有其它文件,现在我们只关心这两个),在CMD中,进入jbpm-jpdl-3.2.2\deploy目录下,使用命令:ant customize.console.for.tomcat 然后我们在deploy下可以看到多出来customizedtarget两个文件夹,进入customized,可以看到jbpm-console.war这个文件,用winrar将其解压到当前目录下,这时我们就得到了jbpm-console的发布应用了,不过别高兴,还有很多工作没做呢。这里我来说下,为什么使用ant customize.console.for.tomcat 这个命令,打开build.xml文件,你可以看到这样一段代码:
<target name="customize.console.for.tomcat" description="Creates a customized jbpm-console.war for tomcat in the customized directory">
    
<mkdir dir="target/war" />
    
<mkdir dir="customized" />
    
<unzip src="jbpm-console.war" dest="target/war" />
    
<copy todir="target/war/WEB-INF/lib">
      
<fileset dir="../lib">
        
<include name="activation.jar" />
        
<include name="antlr*.jar" />
        
<include name="asm.jar" />
        
<include name="bsh.jar" />
        
<include name="cglib.jar" />
        
<include name="commons-logging.jar" />
        
<include name="dom4j.jar" />
        
<include name="hibernate3.jar" />
        
<include name="jboss-backport-concurrent.jar" />
        
<include name="jbossretro-rt.jar" />
      
</fileset>
    
</copy>
    
<delete>
      
<fileset dir="target/war/WEB-INF/lib">
        
<include name="el-api.jar" />
        
<include name="el-ri.jar" />
      
</fileset>
    
</delete>
    
<zip destfile="customized/jbpm-console.war">
      
<fileset dir="target/war" />
    
</zip>
</target>
       大家看到了吧,customize.console.for.tomcattagetname,所以这里使用这个命令就不觉得奇怪了,大象开始也觉得很迷惑,为什么网上都这样写,却不写为什么,看来是问题太简单了,那些大大们想来这根本就不是问题。呵呵呵~~~
    a、加入必要的jar包
          jbpm-console\WEB-INF\lib下要加入以下几个jar包:jboss-j2ee.jarcommons-collections.jarjsf-api.jarjsf-impl.jar,删除jsf-api-14.jarjsf-impl-14.jar这两个jar包。
    b、建jBPM数据库
       jbpm-jpdl-3.2.2\db下找到jbpm.jpdl.mysql.sql,打开它删除前面的alter table JBPM_XX部分,保留后面的,然后再在每句SQL语句后面加上分号,检查一下有没有遗漏。然后在MySQL中新建一个jbpm数据库,将sql脚本导入进来,大象使用的是SQLyog可视化操作工具,其它相关的可视化工具非常多,可以任选一种使用,如果你不用这些工具来简化开发,那就配置mysqlPATH环境变量,在命令行中操作吧。^_^
       SQLyog中操作如下:
       1、点击菜单"DB"->"Create Database",输入jbpm
       2、点击菜单"Tools"->"Import From SQL Statements...",在弹出窗口中点击"..."按钮,选择jbpm.jpdl.mysql.sql文件,然后再点击Execute按钮。请在点击Execute前确保sql脚本没有语法错误,否则是不可能执行成功的。
    c、修改hibernate.cfg.xml文件
       修改jbpm-jpdl-3.2.2\deploy\customized\jbpm-console\WEB-INF\classeshibernate.cfg.xml文件,原配置文件要修改部分如下:
    <!-- hibernate dialect -->
    
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
    
<!-- JDBC connection properties (begin) ===
    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    ==== JDBC connection properties (end) 
-->
    
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
    
<!-- DataSource properties (begin) -->
    
<property name="hibernate.connection.datasource">java:/JbpmDS</property>
    
<!-- DataSource properties (end) -->
    修改后如下:
    <!-- hibernate dialect -->
    
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property>
    
<property name="hibernate.connection.username">root</property>
    
<property name="hibernate.connection.password">自己的密码(无密码就空着)</property>
    
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
    <!-- DataSource properties (begin)
    <property name="hibernate.connection.datasource">java:/JbpmDS</property>
    DataSource properties (end) 
-->
    d、修改web.xml文件
       jbpm-console\WEB-INF下打开web.xml文件,在servlet前加入以下listener,注意:把listener放在所有的servlet前面,我发现网上很多帖子里都没有提到这一点,不知道他们的程序是怎么跑起来的?残念ING~~~
<listener> 
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
</listener>

<listener>
    <listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class> 
</listener>
       这两个监听器很关键,大象先一直没有成功的原因就是没有加这个,而这两个监听器都在jsf-impl.jar包中,jbpm-console这个应用可是用jsf来实现的,如果你不加,则会产生如下这些错误:

javax.servlet.ServletException: Servlet.init() for servlet Faces Servlet threw exception
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:656)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPage(FormAuthenticator.java:316)
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:244)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:256)
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:142)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
    ...16 more


java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:256)
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:142)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023)

    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2008-8-3 13:03:49 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /jbpm-console threw load() exception
    e、修改Tomcat安全验证
        有两种方法修改安全验证,第一种是修改%TOMCAT_HOME%\conf下的tomcat-users.xml文件,第二种是在%TOMCAT_HOME%\conf目录下再新建Catalina文件夹,然后再在Catalina文件夹下建localhost文件夹,在此目录下建jbpm-console.xml文件。
       i、修改tomcat-users.xml文件
          修改前请备份tomcat-users.xml文件,修改后的内容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  
<role rolename="user"/>
  
<role rolename="administrator"/>
  
<role rolename="manager"/>
  
<role rolename="sales"/>
  
<role rolename="hr"/>
  
<role rolename="admin"/>
  
<role rolename="participant"/>
  
<user username="user" password="user" roles="user,sales"/>
  
<user username="shipper" password="shipper" roles="user,hr"/>
  
<user username="manager" password="manager" roles="admin,hr,manager,user,sales"/>
  
<user username="tadmin" password="" roles="admin,manager"/>
  
<user username="admin" password="admin" roles="admin,user,hr"/>
</tomcat-users>
          使用这种方式来处理安全验证将不用考虑向数据库中插入组,角色,用户之类的数据,完全由Tomcat来管理
       ii、新建jbpm-console.xml文件
          使用这种方式将需要向数据库中插入数据,由jBPM来管理安全验证,jbpm-console.xml文件内容如下:
<Context>
<Realm  className="org.apache.catalina.realm.JDBCRealm 
          driverName="
com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/jbpm"
          connectionName
="root" 
          connectionPassword
="自己的密码"
          userTable
="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g" 
          userNameCol
="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_" 
          userCredCol
="DISTINCT u.PASSWORD_"
          userRoleTable
="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g" 
          roleNameCol
="g.NAME_" />
</Context>
          需要向数据库中插入的数据:
      INSERT INTO JBPM_ID_GROUP VALUES(1,'G','sales','organisation',NULL);
      
INSERT INTO JBPM_ID_GROUP VALUES(2,'G','admin','security-role',NULL);
      
INSERT INTO JBPM_ID_GROUP VALUES(3,'G','user','security-role',NULL);
      
INSERT INTO JBPM_ID_GROUP VALUES(4,'G','hr','organisation',NULL);
      
INSERT INTO JBPM_ID_GROUP VALUES(5,'G','manager','security-role',NULL);
      
INSERT INTO JBPM_ID_USER VALUES(1,'U','user','user@sample.domain','user');
      
INSERT INTO JBPM_ID_USER VALUES(2,'U','manager','manager@sample.domain','manager');
      
INSERT INTO JBPM_ID_USER VALUES(3,'U','admin','admin@sample.domain','admin');
      
INSERT INTO JBPM_ID_USER VALUES(4,'U','shipper','shipper@sample.domain','shipper');
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,NULL,2,4);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,NULL,3,4);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,NULL,4,4);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,4,3);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,1,3);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,NULL,2,3);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,NULL,3,3);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(8,'M',NULL,NULL,3,2);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(9,'M',NULL,NULL,2,2);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(10,'M',NULL,NULL,2,5);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(11,'M',NULL,'boss',2,1);
      
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(12,'M',NULL,NULL,1,1);
       这两种方法任选一种即可。
        
此时基本工作都已经做完,不过在发布前,不要忘了,将MySQL的驱动拷贝到%TOMCAT_HOME%\lib目录下,然后就可以将jbpm-console文件夹复制到%TOMCAT_HOME%\webapps目录下了,接着在bin目录下双击tomcat6.exe启动服务器,等启动过程执行完后,打开IE,输入http://localhost:8080/jbpm-console 回车,应该就能看到jbpm控制台界面了。
 
    
       到此,在MySQL下的布署就全部结束了,如果能看到这个界面,那恭喜你,你终于成功了!
    下面接着说下如何将MySQL数据库换成MS SQL Server 2000,其实很简单,如果在MySQL下布署成功了,只需要将hibernate.cfg.xml文件里的配置改成MS SQL Server 2000的连接方式就行了,另外在2000中建立jbpm的数据库也是必要的。
    9、使用SQL Server 2000数据库
       jbpm-jpdl-3.2.2\db下找到jbpm.jpdl.mssql.sql,打开后删除alter table JBPM_XXdrop table JBPM_XX这些语句,这些东东都是用来在以前的版本上做升级用的,我们是新建数据库当然用不到这些了。在SQL Server中新建jbpm数据库,COPY剩下的sql语句,在查询分析器里粘贴,然后执行,这时会有很多警告产生,如下:
警告: 已创建表 'JBPM_DELEGATION',但其最大行大小(8300)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。   

警告: 已创建表 
'JBPM_LOG',但其最大行大小(18321)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。
      这些不用管它,接下来修改hiberate.cfg.xml文件,大象采用的是JTDS驱动的连接方式,修改后的内容如下:
    <!-- hibernate dialect -->
    
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    
<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
    
<property name="hibernate.connection.url">jdbc:jtds:sqlserver://localhost:1433/jbpm</property>
    
<property name="hibernate.connection.username">sa</property>
    
<property name="hibernate.connection.password">自己的密码(无密码就空着)</property>
    
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
    
<!-- DataSource properties (begin)
    <property name="hibernate.connection.datasource">java:/JbpmDS</property>
    DataSource properties (end) 
-->
     不要忘了,还要将JTDS的驱动拷贝到%TOMCAT_HOME%\lib目录下,如果采用的是Tomcat安全验证,此时就不用向数据库插入数据,直接就可以启动服务器运行了。如果采用的是jBPM来管理安全验证,此时则需要将前面提到的数据插入数据库中,在插入前需要修改一下,将每条记录前的ID号去掉,因为数据库中对此字段已经作了标识,不能手动对它设置。数据插入后,就启动服务器看下吧!
     写到这里,关于jbpm-console所有的布署都讲完了,大象以上所说的全部都是亲自在电脑上一步一步的做过,绝不会胡乱copy一下网上的东东发出来。如有什么问题,希望和大家一起交流。(如果图片不能显示,在其上点击右键,选择"显示图片")
     需要使用的JAR包: 点击下载
     SQL脚本: 点击下载
     本文为菠萝大象原创,如要转载请注明出处。
posted on 2008-08-06 17:25 菠萝大象 阅读(9074) 评论(10)  编辑  收藏 所属分类: jBPM

评论:
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000布署详解 2008-08-06 20:18 | 路依
2008-8-6 20:15:27 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2008-8-6 20:15:27 org.apache.catalina.core.StandardContext start
严重: Context [/jbpm-console] startup failed due to previous errors
2008-8-6 20:15:27 org.apache.coyote.http11.Http11AprProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080


按你说的一步步来的。TOMCAT报这个错,网上也有同样的错误,可没人回复。不知道你知道不?  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000布署详解 2008-08-06 22:04 | 菠萝大象
你这个问题看来好像是Tomcat中的lib里面没有catalina.jar这个文件导致的,另外我问下,你确定是按我写的这些环境做的吗?我其实在公司和家里三台电脑上都测试过,确保没问题了,我才这样写的,而且对应网上的做法,一般会出现错误的地方还专门测试过,所以,你先看下你的环境或是jar包都放好了没,配置文件有没有错误,有时候一些不注意的小细节会导致调试很久都找不到出错的地方。  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000布署详解 2008-08-07 09:15 | 路依
应该是jar包的问题。我下载你的jar包覆盖我的就可以了。具体哪个现在还没测试。等有时间了我测试下发上来。  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解[未登录] 2008-12-03 14:56 | zhangy
劳驾 出现这样的问题 web.xml中加了<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

<listener>
<listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class>
</listener>后出现
2008-8-6 20:15:27 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2008-8-6 20:15:27 org.apache.catalina.core.StandardContext start
严重: Context [/jbpm-console] startup failed due to previous errors
2008-8-6 20:15:27 org.apache.coyote.http11.Http11AprProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080

按你说的一步步来的。TOMCAT报这个错,
web.xml不加上述代码后 tomcat正常运行 没有问题
但是洅浏览器中键入http://localhost:8989/jbpm-console/sa/processes.jsf后回车
tomcat报这样的异常了


警告: Unexpected error forwarding to login page
javax.servlet.ServletException: Servlet.init() for servlet Faces Servlet threw exception
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1085)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:701)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:663)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
ispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
patcher.java:312)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(Form
Authenticator.java:220)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:504)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:16
0)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Thread.java:595)
怎么办????  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解 2008-12-18 15:23 | 独上太行
警告: No default ExpressionFactory from Faces Implementation, attempting to load
from Feature[compiler.ExpressionFactory]
2008-12-18 15:21:13 com.sun.facelets.FaceletViewHandler handleRenderException
严重: Error Rendering View[/ua/login.xhtml]
com.sun.facelets.FaceletException: Could not instantiate feature[compiler.Expres
sionFactory]: com.sun.el.ExpressionFactoryImpl
at com.sun.facelets.compiler.Compiler.featureInstance(Compiler.java:154)

at com.sun.facelets.compiler.Compiler.createExpressionFactory(Compiler.j
ava:143)
at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFace
letFactory.java:198)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFacelet
Factory.java:144)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFacelet
Factory.java:95)
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java
:517)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.jav
a:567)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrap
per.java:178)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePha
se.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
atcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica
tionDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
ispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
patcher.java:301)
at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPag
e(FormAuthenticator.java:315)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(Form
Authenticator.java:243)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSock
et.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
2008-12-18 15:21:13 com.sun.faces.lifecycle.LifecycleImpl phase
警告: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@5113
f0) threw exception
com.sun.facelets.FaceletException: Could not instantiate feature[compiler.Expres
sionFactory]: com.sun.el.ExpressionFactoryImpl
at com.sun.facelets.compiler.Compiler.featureInstance(Compiler.java:154)

at com.sun.facelets.compiler.Compiler.createExpressionFactory(Compiler.j
ava:143)
at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFace
letFactory.java:198)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFacelet
Factory.java:144)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFacelet
Factory.java:95)
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java
:517)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.jav
a:567)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrap
per.java:178)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePha
se.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
atcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica
tionDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
ispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
patcher.java:301)
at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPag
e(FormAuthenticator.java:315)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(Form
Authenticator.java:243)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSock
et.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
[ERROR] Servlet.service() for servlet Faces Servlet threw exception
com.sun.facelets.FaceletException: Could not instantiate feature[compiler.Expres
sionFactory]: com.sun.el.ExpressionFactoryImpl
at com.sun.facelets.compiler.Compiler.featureInstance(Compiler.java:154)

at com.sun.facelets.compiler.Compiler.createExpressionFactory(Compiler.j
ava:143)
at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFace
letFactory.java:198)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFacelet
Factory.java:144)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFacelet
Factory.java:95)
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java
:517)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.jav
a:567)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrap
per.java:178)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePha
se.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
atcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica
tionDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
ispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
patcher.java:301)
at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPag
e(FormAuthenticator.java:315)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(Form
Authenticator.java:243)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSock
et.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
[WARN] Unexpected error forwarding to login page
javax.servlet.ServletException: Could not instantiate feature[compiler.Expressio
nFactory]: com.sun.el.ExpressionFactoryImpl
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:249)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
atcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica
tionDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD
ispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis
patcher.java:301)
at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPag
e(FormAuthenticator.java:315)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(Form
Authenticator.java:243)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSock
et.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
我加了那两个监听器后还是报错,不知道楼主知道什么原因不?
  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解 2008-12-18 15:50 | 独上太行
找到答案了,原来是少了el-ri-1.0.jar
http://download.java.net/maven/2/com/sun/el/el-ri/1.0/
不明白在jboss-jbpm自带的jboss服务器中没有这个包为什么能运行。。。
忘了说明一下,我现在用的是jbpm3.3.0的。是通过安装包安装的jboss-jbpm,结构和之前的版本不大一样了。  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解 2009-09-30 08:47 | 崔永
请问我怎么下载你的Lib啊?一点击下载就说我的权限不够。  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解 2009-10-09 15:07 | 独上太行
@崔永
请再试一下,我今天下载也是可以的,不需要登录。实在不行,给我你的邮箱我把jar发给你。  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解 2009-10-09 15:16 | 崔永
依然有如下错误提示:

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

但是我已经解决了,找到了可用的包了,谢谢你。  回复  更多评论
  
# re: [原创] jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解 2009-12-24 11:39 | 菠萝大象
感谢大家的回复,我好久都没写博客了,没想到,这么早写的一篇文章,现在还有人关注。我决定开始再来更新博客。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: