注意:
1 低版本c3p0会报错:Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z
千万记得要删除Target包下的旧版本!!!com.mchange c3p0 0.9.5.4 2 低版本jackson会报错:com.fasterxml.jackson.databind.exc.InvalidDefinitionException
com.fasterxml.jackson.core jackson-databind 2.9.8 3 如果先前创建过Camunda会报错:HistoryLevel mismatch
删除Camunda,重新创建
4 springmvc4 中 web.xml配置的Log4jConfigListener
在springmvc5中已经弃用,所以需要修改
参考:spring5.0解决Log4jConfigListener过期问题_dabaishaflyw的博客-CSDN博客
- "1.0" encoding="UTF-8"?>
-
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>abc.parentartifactId>
- <groupId>com.abcgroupId>
- <version>0.0.1-SNAPSHOTversion>
- parent>
- <modelVersion>4.0.0modelVersion>
-
- <artifactId>abc.webApproveartifactId>
- <packaging>warpackaging>
-
- <name>abc.webApprove Maven Webappname>
-
- <url>http://www.example.comurl>
-
- <properties>
- <camunda.version>7.17.0camunda.version>
- <spring.version>5.3.18spring.version>
- <h2.version>2.0.206h2.version>
- <slf4j.version>1.7.36slf4j.version>
- <maven.compiler.source>1.8maven.compiler.source>
- <maven.compiler.target>1.8maven.compiler.target>
- properties>
-
- <dependencies>
- <dependency>
- <groupId>com.abcgroupId>
- <artifactId>abc.webartifactId>
- dependency>
-
- <dependency>
- <groupId>org.hibernategroupId>
- <artifactId>hibernate-coreartifactId>
- <version>5.4.12.Finalversion>
- dependency>
- <dependency>
- <groupId>org.hibernategroupId>
- <artifactId>hibernate-entitymanagerartifactId>
- <version>5.4.12.Finalversion>
- dependency>
- <dependency>
- <groupId>org.hibernategroupId>
- <artifactId>hibernate-ehcacheartifactId>
- <version>5.4.12.Finalversion>
- dependency>
- <dependency>
- <groupId>org.springframework.datagroupId>
- <artifactId>spring-data-jpaartifactId>
- <version>1.11.13.RELEASEversion>
- dependency>
-
-
-
- <dependency>
- <groupId>org.camunda.bpmgroupId>
- <artifactId>camunda-engineartifactId>
- dependency>
- <dependency>
- <groupId>org.camunda.bpmgroupId>
- <artifactId>camunda-engine-springartifactId>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-contextartifactId>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-jdbcartifactId>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-txartifactId>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-ormartifactId>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-webartifactId>
- dependency>
- <dependency>
- <groupId>com.mchangegroupId>
- <artifactId>c3p0artifactId>
- <version>0.9.5.4version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.coregroupId>
- <artifactId>jackson-databindartifactId>
- <version>2.9.8version>
- dependency>
- <dependency>
- <groupId>org.apache.logging.log4jgroupId>
- <artifactId>log4j-apiartifactId>
- <version>2.10.0version>
- dependency>
- <dependency>
- <groupId>org.apache.logging.log4jgroupId>
- <artifactId>log4j-coreartifactId>
- <version>2.10.0version>
- dependency>
-
- <dependency>
- <groupId>org.apache.logging.log4jgroupId>
- <artifactId>log4j-webartifactId>
- <version>2.9.1version>
- dependency>
- <dependency>
- <groupId>org.projectlombokgroupId>
- <artifactId>lombokartifactId>
- dependency>
- dependencies>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.camunda.bpmgroupId>
- <artifactId>camunda-bomartifactId>
- <version>${camunda.version}version>
- <scope>importscope>
- <type>pomtype>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-framework-bomartifactId>
- <version>${spring.version}version>
- <scope>importscope>
- <type>pomtype>
- dependency>
- dependencies>
- dependencyManagement>
-
- <build>
- <finalName>${project.artifactId}finalName>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-war-pluginartifactId>
- plugin>
-
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-assembly-pluginartifactId>
- plugin>
-
- <plugin>
- <groupId>org.apache.tomcat.mavengroupId>
- <artifactId>tomcat7-maven-pluginartifactId>
- <configuration>
- <uriEncoding>utf8uriEncoding>
- <port>9007port>
- <path>/path>
- configuration>
- plugin>
- plugins>
- <testResources>
-
- <testResource>
- <directory>${project.basedir}/src/test/resourcesdirectory>
- testResource>
- <testResource>
- <directory>${project.basedir}/src/main/resourcesdirectory>
- testResource>
- testResources>
- build>
- project>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
- <display-name>webApprove</display-name>
- <description>审批系统</description>
- <context-param>
- <param-name>webAppRootKey</param-name>
- <param-value>webApprove.root</param-value>
- </context-param>
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>classpath:log4j/log4j.properties</param-value>
- </context-param>
- <context-param>
- <param-name>log4jRefreshInterval</param-name>
- <param-value>6000</param-value>
- </context-param>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/applicationContext.xml</param-value>
- </context-param>
- <!-- log4j2-begin -->
- <listener>
- <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
- </listener>
- <filter>
- <filter-name>log4jServletFilter</filter-name>
- <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>log4jServletFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- <dispatcher>INCLUDE</dispatcher>
- <dispatcher>ERROR</dispatcher>
- </filter-mapping>
- <!-- log4j2-end -->
- <listener>
- <description>spring监听器</description>
- <listener-class>org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <listener>
- <description>防止内存泄露</description>
- <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
- </listener>
- <listener>
- <listener-class>
- org.springframework.web.context.request.RequestContextListener
- </listener-class>
- </listener>
-
- <filter>
- <filter-name>springSessionRepositoryFilter</filter-name>
- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>springSessionRepositoryFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>ERROR</dispatcher>
- </filter-mapping>
- <filter>
- <filter-name>characterEncodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter
- </filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
-
- <filter-mapping>
- <filter-name>characterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- <filter>
- <filter-name>setBasePathFilter</filter-name>
- <filter-class>com.abc.web.filter.SetBasePathFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>setBasePathFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter>
- <filter-name>checkSessionFilter</filter-name>
- <filter-class>com.abc.web.filter.CheckSessionFilter</filter-class>
- <init-param>
- <param-name>excludeUrl</param-name>
- <param-value>.*(login|check|setCookie).do.*</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>checkSessionFilter</filter-name>
- <url-pattern>*.do</url-pattern>
- </filter-mapping>
- <filter>
- <filter-name>hibernateFilter</filter-name>
- <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
- <!-- <init-param>
- <param-name>excludeSuffixs</param-name>
- <param-value>js,css,jpg,gif</param-value>
- </init-param>
- <init-param>
- <param-name>singleSession</param-name>
- <param-value>true</param-value>
- </init-param> -->
- <init-param>
- <param-name>sessionFactoryBeanName</param-name>
- <param-value>sessionFactory</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>hibernateFilter</filter-name>
- <url-pattern>*.do</url-pattern>
- </filter-mapping>
-
- <servlet>
- <servlet-name>webApprove</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springmvc-servlet.xml</param-value>
- </init-param>
- <init-param>
- <param-name>detectAllHandlerExceptionResolvers</param-name>
- <param-value>false</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>webApprove</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>120</session-timeout>
- <tracking-mode>COOKIE</tracking-mode>
- </session-config>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
但我的datasource已经在application.xml中配置了。
所以此处注释了
- package com.abc.webApprove.config;
-
- import org.camunda.bpm.engine.*;
- import org.camunda.bpm.engine.spring.ProcessEngineFactoryBean;
- import org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.jdbc.datasource.DriverManagerDataSource;
- import org.springframework.transaction.PlatformTransactionManager;
-
- import javax.sql.DataSource;
-
- @Configuration
- public class LoanApplicationContext {
- // @Bean
- // public DataSource dataSource() {
- // DriverManagerDataSource dataSource = new DriverManagerDataSource();
- // dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
- // dataSource.setUrl("jdbc:mysql://ip/abc_camunda?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true\n");
- // dataSource.setUsername(" ");
- // dataSource.setPassword(" ");
- // return dataSource;
- // }
-
- @Bean
- public PlatformTransactionManager transactionManager(DataSource dataSource) {
- return new DataSourceTransactionManager(dataSource);
- }
-
- @Bean
- public SpringProcessEngineConfiguration engineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager) {
- SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
-
- configuration.setProcessEngineName("engine");
- configuration.setDataSource(dataSource);
- configuration.setTransactionManager(transactionManager);
- configuration.setDatabaseSchemaUpdate("true");
- configuration.setJobExecutorActivate(false);
-
- return configuration;
- }
-
- @Bean
- public ProcessEngineFactoryBean engineFactory(SpringProcessEngineConfiguration engineConfiguration) {
- ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
- factoryBean.setProcessEngineConfiguration(engineConfiguration);
- return factoryBean;
- }
-
- @Bean
- public ProcessEngine processEngine(ProcessEngineFactoryBean factoryBean) throws Exception {
- return factoryBean.getObject();
- }
-
- @Bean
- public RepositoryService repositoryService(ProcessEngine processEngine) {
- return processEngine.getRepositoryService();
- }
-
- @Bean
- public RuntimeService runtimeService(ProcessEngine processEngine) {
- return processEngine.getRuntimeService();
- }
-
- @Bean
- public TaskService taskService(ProcessEngine processEngine) {
- return processEngine.getTaskService();
- }
-
- @Bean
- public HistoryService historyService(ProcessEngine processEngine) {
- return processEngine.getHistoryService();
- }
-
- @Bean
- public ManagementService managementService(ProcessEngine processEngine) {
- return processEngine.getManagementService();
- }
- }
因为bpmn文件发送比较麻烦,所以这里就不演示了。