mac os idea maven搭建ssh+jboss项目 spring+springmvc+hibernate+jboss

最近接手的一个项目,使用的是spring+springmvc+hibernate+jboss这一套框架,以前都是用是mybatis+tomcat,这里提前熟悉下,搭建个简单的脚手架,方便以后做测试,顺便记录下搭建步骤。这里特别说明下,写完这篇文章,只是测试了项目能正常启动,能访问index.jsp,没有测试spring,hibernate这些框架,不过问题应该不大,如果报错了后微调下就好了。
项目github路径:https://github.com/Harry-ZH-Wang/sshDemo


首先创建一个空的maven的架子,后面修改pom.xml文件,也可以建立一个普通的项目,然后关联maven,这里做个maven项目

创建maven项目

image.png

因为是web项目,模版的时候可以选择maven-archetype-webapp,也可以选择默认的,常用的包都在里面,不够后期配置pom.xml就可以了。

image.png

填写好group id其实就是包名,后面也可以更改的,还有artifiact id就是工程名称,然后next。

image.png

这里选择maven的配置,如果没有修改可以使用默认的,如果有修改了,maven home使用自己安装的路径,settings文件这些指向自己的路径。

image.png

设置工程名字,项目的保存路径,点击完成。

image.png

等待项目创建。

image.png

添加jar依赖,调整工程结构

创建完成后根据自己的项目修改pom.xml,这里是我的pom配置,是随便找的一个以前的,有些不是必要的包。

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>sshDemo</groupId>
  <artifactId>sshDemo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>sshDemo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
    <!-- spring版本号 -->
    <spring.version>4.2.0.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.2.8</mybatis.version>
    <!-- log4j日志文件管理包版本 -->
    <slf4j.version>1.7.12</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <!-- spring框架包 start -->

    <!-- spring start -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- spring框架包 end -->
    <!-- mybatis框架包 start -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- mybatis框架包 end -->
    <!-- 数据库驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.35</version>
    </dependency>
    <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
    <!-- <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId>
        <version>1.4</version> </dependency> -->
    <!-- jstl标签类 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <!-- log END -->
    <!-- Json -->
    <!-- 格式化对象,方便输出日志 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.6</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    <!-- 上传组件包 start -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.10</version>
    </dependency>
    <!-- oracle驱动 -->
    <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>12.1.0.2.0</version>
    </dependency>
    <!-- 添加CXF -->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxws</artifactId>
      <version>3.1.8</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http</artifactId>
      <version>3.1.8</version>
    </dependency>
    <!-- POI -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.15-beta2</version>
    </dependency>
    <!-- pinyin4j -->
    <dependency>
      <groupId>com.belerweb</groupId>
      <artifactId>pinyin4j</artifactId>
      <version>2.5.0</version>
    </dependency>
    <!-- jpinyin -->
    <dependency>
      <groupId>com.github.stuxuhai</groupId>
      <artifactId>jpinyin</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <!-- FTP -->
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>3.6</version>
    </dependency>
    <!-- httpclient -->
    <dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1</version>
    </dependency>
    <!-- xml -->
    <dependency>
      <groupId>dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>1.6.1</version>
    </dependency>
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.20</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.jr</groupId>
      <artifactId>jackson-jr-all</artifactId>
      <version>2.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.7</version>
    </dependency>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>1.9.5</version>
      <scope>test</scope>
    </dependency>
    <!-- rar解压 -->
    <dependency>
      <groupId>com.github.axet</groupId>
      <artifactId>java-unrar</artifactId>
      <version>1.7.0-3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-core</artifactId>
      <version>1.17</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.6.5</version>
    </dependency>

    <!--Hibernate依赖-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.1.4.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.1-api</artifactId>
      <version>1.0.0.Final</version>
    </dependency>

    <!-- ehcache jar package -->
    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache</artifactId>
      <version>2.10.2</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.snowdrop</groupId>
      <artifactId>snowdrop-vfs</artifactId>
      <version>3.1.1.Final</version>
    </dependency>

  </dependencies>
  <build>
    <finalName>sshDemo</finalName>
    <plugins>
      <!-- jdk版本号 不指定这个重写方法注解会报错 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.10</version>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit4</artifactId>
            <version>2.10</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>


等maven把依赖下载完成后我们看下项目等结构,是少了存储java类等目录结构,我们需要自己建立一个。

image.png

调整下目录结构,配置方式多种多样,这里我是这么配置的
src/main/resources下放各种配置文件
src/main/java下放源代码
webapp/jsp下放jsp页面
以此类推

先建立java,resources,test文件夹

在Project Structure中 java设置为Sources(蓝色),resources设置为Resources,test为Test

image.png
image.png
image.png

配置spring springmvc hibernate jboss

配置的方式多种多样,这里只是简单的搭建脚手架,首先看一下完成了的目录结构

image.png
spring 配置文件

applicationContext.xml 配置文件,这里是主的spirng配置文件,配置事务,数据库c3p0驱动,cxf等都在这个配置文件中,是放在resources文件夹下。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd
                        http://www.springframework.org/schema/aop
                        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                        http://www.springframework.org/schema/cache
                        http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">
    <!-- 配置扫描规则 -->
    <context:component-scan base-package="com.wzh"></context:component-scan>

    <cache:annotation-driven cache-manager="cacheManager"></cache:annotation-driven>
    <!-- 定义一个缓存管理器 -->
    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml"></property>
    </bean>
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcache"></property>
    </bean>


    <!-- 商业数据源 c3p0,apache提供的DBCP-->
    <!-- 商业数据源 c3p0, apache提供的DBCP -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property>
        <property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.0.114:1521:oracleSID"></property>
        <property name="user" value="system"></property>
        <property name="password" value="Password01"></property>
        <property name="initialPoolSize" value="15"></property><!-- 初始化连接数的数量 -->
        <property name="minPoolSize" value="15"></property>
        <property name="maxPoolSize" value="100"></property>
        <property name="acquireIncrement" value="5"></property>
        <property name="maxStatements" value="200"></property>
        <property name="maxIdleTime" value="200"></property><!-- 超时时间 -->
        <property name="checkoutTimeout" value="2000"></property><!-- 多长时间回收一次超时连接 -->
    </bean>

    <!-- SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLDialect
                </prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
        <property name="packagesToScan">
            <list>
                <value>com.wzh.beans</value>
            </list>
        </property>
    </bean>

    <!-- 事务 -->
    <bean id="txManage" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!-- 第二种事务管理方式:声明式事务管理 -->
    <!-- 定义一个通知 -->
    <tx:advice id="txAdvice" transaction-manager="txManage">
        <tx:attributes>
            <tx:method name="*" read-only="true"></tx:method>
            <tx:method name="add*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>
            <tx:method name="save*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>
            <tx:method name="insert*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>

            <tx:method name="update*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>
            <tx:method name="modify*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>

            <tx:method name="delete*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>
            <tx:method name="remove*" read-only="false" propagation="REQUIRED" isolation="REPEATABLE_READ" rollback-for="java.lang.Exception"></tx:method>

            <tx:method name="select*" read-only="true" propagation="SUPPORTS"></tx:method>
            <tx:method name="find*" read-only="true" propagation="SUPPORTS"></tx:method>
            <tx:method name="get*" read-only="true" propagation="SUPPORTS"></tx:method>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="serviceMethods" expression="execution(* com.wzh.service.impl.*.*(..))"></aop:pointcut>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"></aop:advisor>
    </aop:config>

    <!-- 配置transactionTemplate -->
    <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
        <property name="transactionManager" ref="txManage"></property>
        <!--定义事务隔离级别,-1表示使用数据库默认级别-->
        <property name="readOnly" value="false"></property>
        <property name="isolationLevelName" value="ISOLATION_DEFAULT"></property>
        <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"></property>
    </bean>

    <!-- 开启切面功能 -->
    <aop:aspectj-autoproxy />

    <!--CXF配置 -->
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:/cxf-beans.xml"/>

</beans>
cxf 配置文件

cxf-beans.xml 配置文件,需要cxf接口才要配置,这里是空的文件,没有发布接口,只是满足项目启动,可以不要此文件,如果不要此配置文件,需要同步在applicationContext.xml 和wel.xml中去掉关于cxf的配置,是放在resources文件夹下。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd
 http://cxf.apache.org/jaxws
 http://cxf.apache.org/schemas/jaxws.xsd">

    <!--CXF配置 这里因为是3.x的CXF 只需要引用一个文件就好 -->
    <import resource="classpath:META-INF/cxf/cxf.xml"></import>



    <!-- id是接口名,不重复就好,serviceClass 是接口的路径,address是对外暴露的地址名,bean classs是引用的接口的实现类 -->

</beans>

缓存配置文件

ehcache.xml 配置hibernate的缓存,这里只是简单的配置了下,是放在resources文件夹下。

<ehcache>
    <diskStore path="java.io.tmpdir"/><!-- D:/cache -->
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        memoryStoreEvictionPolicy="LFU"
        />
        
        <cache
        name="users"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="10"
        timeToLiveSeconds="20"
        overflowToDisk="true"
        memoryStoreEvictionPolicy="LFU"
        />
</ehcache>
<!-- maxElementsInMemory 咱们内存中,可以缓存中允许最大的对象数量 -->
<!-- eternal 缓存是否永久有效,false -->
<!-- timeToIdleSeconds 定义的缓存中,从来没有被调用的数据,它的生命周期,单位是秒 -->
<!-- timeToLiveSeconds 调用的数据,在缓存中,可以存活的时间,相当于:满血复活 -->
<!-- overflowToDisk 当内存不足的时候,是否转存到磁盘中去 -->
<!-- memoryStoreEvictionPolicy 缓存的出站策略, 当maxElementsInMemory达到这个峰值的时候,
,Ehcache将如何清理之前的一些不必要的数据,
LFU(最少访问次数来清理) FIFO(先进先出) LRU(最少使用,默认缓存策略)
-->
springmvc 配置文件

Spring-servlet.xml 配置文件,配置springmvc相关功能,放在web-inf文件夹下。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- 开启springmvc的注解支持 -->
    <mvc:annotation-driven conversion-service="tc" />
    <!-- 定义静态资源 -->
    <mvc:resources location="/static/" mapping="/static/**" />

    <!-- 可以配置一个全局类型转换器 -->
    <!-- 配置spring定义的转换工厂类 -->
    <bean id="tc" class="org.springframework.context.support.ConversionServiceFactoryBean">

    </bean>

    <!-- 制定扫描规则 -->
    <context:component-scan base-package="com">
        <!-- 制定过滤器 -->
        <context:include-filter type="annotation"
                                expression="org.springframework.stereotype.Controller" />
        <context:exclude-filter type="annotation"
                                expression="org.springframework.stereotype.Repository" />
        <context:exclude-filter type="annotation"
                                expression="org.springframework.stereotype.Service" />
    </context:component-scan>

    <!-- 可以配置一个全局类型转换器 -->
    <!-- 配置spring定义的转换工厂类 -->



    <!-- 配置http消息体数据与JSON转换 -->
    <bean
            class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJackson2HttpMessageConverter"></ref>
            </list>

        </property>
    </bean>
    <!-- 配置HTTP消息信息与JSON对象之间的一个转换器 -->
    <bean id="mappingJackson2HttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    </bean>

    <!-- 视图解析器 JSP -->
    <bean id="urlBasedViewResolver"
          class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/JSP/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>



    <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver 说明: p:defaultEncoding="UTF-8":这里设置默认的文件编码为UTF-8,必须与用户JSP的默认编码一致;
        p:maxUploadSize="5000000":指定文件上传大小,单位为字节; p:uploadTempDir="fileUpload/temp":文件上传临时目录,上传完成后,就会将临时文件删除; -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
          p:defaultEncoding="UTF-8" p:maxUploadSize="5000000" p:uploadTempDir="fileUpload/temp">
    </bean>
</beans>
log4j 日志配置文件

因为用的jboss,jboss默认使用的自己的日志框架,如果要使用自己的日志配置,除了log4j.porperties,还需要jboss-deployment-structure.xml 配置下jboss,放在web-inf文件夹下

log4j.properties

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${jboss.server.log.dir}/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =${jboss.server.log.dir}/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.apache.log4j"/>
        </exclusions>
    </deployment>
</jboss-deployment-structure>
配置web.xml

最后把配置文件整合到项目工程中

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>mavenDemo</display-name>

  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>sshDemo.root</param-value>
  </context-param>

  <context-param>
    <param-name>contextClass</param-name>
    <param-value>
      org.jboss.spring.vfs.context.VFSXmlWebApplicationContext
    </param-value>
  </context-param>

  <!--    spring容器启动 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
  </context-param>

  <!--   指定日志刷新的时间,单位毫秒 -->
  <context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- 配置欢迎页面 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!--    字符过滤器 -->

  <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>

  <!-- 启动CXF框架 web service-->
  <servlet>
    <servlet-name>cxf</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>cxf</servlet-name>
    <url-pattern>/webservice/*</url-pattern>
  </servlet-mapping>

  <!--   配置核心控制器 -->
  <servlet>
    <servlet-name>Spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Spring</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>


</web-app>

添加启动容器

项目整合好后,对jboss进行配置

本地安装jboss

tomcat的例子很多,jboss的稍微要少一些,因为我自己也没怎么用过jboss,这里正好使用jboss,本地是已经安装好了jboss的,mac安装jboss很简单,我这里是直接下载了个zip放在对应的文件夹下,下载的时候需要注意jboss不同版本对应不同版本的jdk,我这里用的1.7的jdk,所有下载的jboss jboss-as-7.1.1.Final。
下载路径:http://jbossas.jboss.org/downloads

image.png

解压到对应目录后,启动测试下

image.png

访问下:http://localhost:8080

image.png

如果要停止,控制台界面 control+c

idea 配置jboss

首先添加jboss全局容器,在application server菜单中添加

image.png
image.png

选择安装好的jboss路径

image.png

添加项目启动的jboss

image.png
image.png

选择之前添加的全局jboss容器

image.png

切换到deployment标签页,点击添加按钮,选择war explored选项

image.png

切换回server,配置热部署

image.png

保存后,选择配置jboss容器启动就好了

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容