复习springMVC+hibernate+dubboProvider搭建框架
来源:互联网 发布:手机淘宝一排三个图片 编辑:程序博客网 时间:2024/04/30 11:29
1.项目结构
2.配置文件
spring-dubbo.xml
<?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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd" ><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="${dubbo.application}" /> <!-- 需要注册服务--> <dubbo:registry protocol="zookeeper" address="${dubbo.registry}" /><!-- 配置注册中心 /--><!--<dubbo:registry address="N/A" />--> <!-- 用dubbo协议在20880端口暴露服务 direct:所有消息都不派发到线程池,全部在IO线程上直接执行 --><dubbo:protocol name="dubbo" port="${provider.protocol}" accesslog="${provider.accesslog}" /><!-- 声明需要暴露的服务接口 retries:关闭写入方法的重试--><dubbo:service interface="com.ylz.dubbo.server.UserInfoServer" ref="UserInfoServer" retries="${provider.retries}" timeout="${provider.timeout}" version="${provider.version}"/></beans>
pom.xml
<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"><modelVersion>4.0.0</modelVersion><groupId>com.ylz</groupId><artifactId>provider</artifactId><version>0.0.1</version><packaging>jar</packaging><name>dubboProviderTest Maven</name><url>http://maven.apache.org</url><description>dubboProviderTest Maven</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>3.2.0.RELEASE</spring.version><hibernate.version>4.3.8.Final</hibernate.version><jackson.version>2.5.0</jackson.version></properties><build><finalName>provider_${project.version}</finalName><sourceDirectory>src/main/java</sourceDirectory><resources><resource><targetPath>${project.build.directory}/classes</targetPath><directory>src/main/resources</directory><filtering>true</filtering> <includes><include>spring*.xml</include><include>*.properties</include></includes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build><dependencies><!-- 引入本地工程 --><dependency><groupId>com.ylz</groupId><artifactId>dto</artifactId><version>0.0.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3</version></dependency><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</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-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-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency><!-- spring aop编程 --><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>3.2.0.RELEASE</version></dependency><!-- 关系型数据库整合时需配置 如hibernate jpa等 --><!-- hibernate --><dependency><groupId>org.hibernate.javax.persistence</groupId><artifactId>hibernate-jpa-2.0-api </artifactId><version>1.0.1.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.1.9.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-ehcache</artifactId><version>4.1.9.Final</version></dependency><!-- c3p0数据源 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5-pre10</version></dependency><!-- 使用Spring配置 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.0.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.0.2.RELEASE</version></dependency><!-- mysql连接 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.34</version></dependency><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><type>jar</type><scope>provided</scope></dependency><!-- json --><!-- <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> --><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.2.3</version></dependency><!-- log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><!-- dubbo zookeeper 相关 --><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.2</version><exclusions><exclusion><artifactId>spring</artifactId><groupId>org.springframework</groupId></exclusion></exclusions></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.6</version><exclusions><exclusion><artifactId>jmxtools</artifactId><groupId>com.sun.jdmk</groupId></exclusion><exclusion><artifactId>jmxri</artifactId><groupId>com.sun.jmx</groupId></exclusion><exclusion><artifactId>jms</artifactId><groupId>javax.jms</groupId></exclusion></exclusions></dependency></dependencies></project>
spring.xml
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd"> <!-- 加载配置文件 --> <bean id="propertyConfigurer" class="com.ylz.CustomConfig"><property name="locations"><list><value>classpath:config.properties</value></list></property></bean> <!-- 扫描service自动注入为bean --> <context:component-scan base-package="com.ylz" /> <!-- 开启AOP监听 只对当前配置文件有效 --><aop:aspectj-autoproxy expose-proxy="true"/><!-- 导入hibernate服务配置 --><import resource="classpath:hibernate.xml" /><!-- 导入dubbo服务配置 --><!-- <import resource="classpath:spring-dubbo.xml" /> --></beans>
hibernate.xml
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd"> <!-- 配置hibernate --> <!-- 配置数据源 c3p0 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driver}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 请求超时时间 --> <property name="checkoutTimeout" value="30000" /> <!-- 每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 --> <property name="idleConnectionTestPeriod" value="30" /> <!-- 连接数据库连接池最大空闲时间 --> <property name="maxIdleTime" value="30" /> <!-- 连接池初始化连接数 --> <property name="initialPoolSize" value="5" /> <property name="minPoolSize" value="5" /> <property name="maxPoolSize" value="20" /> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> <property name="acquireIncrement" value="5" /> </bean> <!-- 配置hibernate的SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 注入数据源 相关信息看源码 --> <property name="dataSource" ref="dataSource" /> <!-- hibernate配置信息 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <!-- 开启二级缓存 ehcache --> <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop> <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop> <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop> <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.cache.provider_configuration_file_resource_path} </prop> </props> </property> <!-- 扫描hibernate注解配置的entity --> <property name="packagesToScan" value="com.ylz" /> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 开启注解事务 只对当前配置文件有效 --><tx:annotation-driven transaction-manager="txManager" order="100"/><bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean></beans>
config.properties
#applicationconfigs#jdbcc3p0configjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/css?useUnicode=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=root#hibernateconfighibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.show_sql=truehibernate.format_sql=falsehibernate.hbm2ddl.auto=update#hibernate.cache.use_second_level_cache=truehibernate.cache.use_query_cache=truehibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactoryhibernate.cache.provider_configuration_file_resource_path=ehcache.xml#listenerstopportstop.port=10882
log4j.properties
### set log levels ### log4j.rootLogger = INFO , C , D , E ### console ### log4j.appender.C = org.apache.log4j.ConsoleAppender log4j.appender.C.Target = System.out log4j.appender.C.layout = org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern = [springmvc_hibernate_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n ### log file ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = ../logs/springmvc_hibernate_demo.log log4j.appender.D.Append = true log4j.appender.D.Threshold = INFO log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = [springmvc_hibernate_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n ### exception ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = ../logs/springmvc_hibernate_demo_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 = [sspringmvc_hibernate_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
CustomConfig.java
package com.ylz;import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/** * 用PropertyPlaceholderConfigurer在加载上下文的时候暴露properties * @author Auser * */public class CustomConfig extends PropertyPlaceholderConfigurer { private static Map<String, String> ctxPropertiesMap; @Override protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)throws BeansException { super.processProperties(beanFactory, props); //load properties to ctxPropertiesMap ctxPropertiesMap = new HashMap<String, String>(); for (Object key : props.keySet()) { String keyStr = key.toString(); String value = props.getProperty(keyStr); ctxPropertiesMap.put(keyStr, value); } } //static method for accessing context properties public static String getContextProperty(String name) { return ctxPropertiesMap.get(name); } }
手动启动spring框架
StartServer.java
package com.ylz;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;import org.apache.commons.lang.math.NumberUtils;import org.apache.log4j.Logger;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ylz.tools.util.StringUtil;/** * <一句话功能简述> * <功能详细描述> * * @author Administrator * @version [版本号, 2015-4-15] * @see [相关类/方法] * @since [产品/模块版本] */public class StartServer{private static final Logger logger = Logger.getLogger(StartServer.class);@SuppressWarnings("resource")public static void main(String[] args) {try {final ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "spring.xml" });context.start();// 监听端口String port = CustomConfig.getContextProperty("stop.port");System.out.println(port);if (StringUtil.isEmpty(port) || !NumberUtils.isNumber(port)) {// 正常退出程序System.exit(0);}// 启动监听程序Listener listener = new Listener(Integer.parseInt(port));Thread run = new Thread(listener);run.start();} catch (Exception e) {// TODO: handle exceptionlogger.error(e.getMessage(), e);System.exit(0);}}}class Listener implements Runnable{ private static final Logger logger = Logger.getLogger(StopServer.class); ServerSocket server = null; Socket socket = null; InputStream in = null; BufferedReader br = null; final int port; protected Listener(int port) { this.port = port; } @Override public void run() { try { server = new ServerSocket(port); logger.info("Server stop listener == > \t port = > " + port); socket = server.accept(); logger.info("Server stop action == > \t port = > " + port); in = socket.getInputStream(); //InputStreamReader将字节流转化为字符流 br = new BufferedReader(new InputStreamReader(in)); //行读取客户端数据 String info = br.readLine(); logger.info(info); } catch (IOException e) { logger.error(e); } finally { close(server, socket, in, br); try { // 此处可以执行关闭数据库连接等操作 Thread.sleep(5000l); } catch (InterruptedException e) { logger.error(e); } System.exit(0); } } private void close(ServerSocket server, Socket socket, InputStream in, BufferedReader br) { try { if (null != br) br.close(); } catch (IOException e) { logger.error(e); } try { if (null != in) in.close(); } catch (IOException e) { logger.error(e); } try { if (null != socket && !socket.isClosed()) socket.close(); } catch (IOException e) { logger.error(e); } try { if (server != null && !server.isClosed()) server.close(); } catch (IOException e) { logger.error(e); } }}
1 0
- 复习springMVC+hibernate+dubboProvider搭建框架
- 复习springMVC+hibernate+dubboConsumer搭建框架
- SpringMVC+hibernate框架搭建
- springMVC+hibernate框架搭建异常
- Spring+Springmvc+Hibernate框架搭建
- SpringMVC+Spring+Hibernate框架搭建
- 搭建springMVC+Hibernate+spring框架常见问题
- 框架搭建(SpringMVC+Spring+hibernate )
- Maven+SpringMVC+Hibernate项目框架搭建
- Maven搭建springmvc+spring+hibernate+mysql框架
- springmvc +hibernate+ spring+ maven框架搭建
- Spring+Springmvc+Hibernate框架搭建,简单实例
- JAVA WEB搭建 SpringMVC+Spring+hibernate 框架
- springMVC+spring+hibernate框架搭建1
- Maven搭建SpringMvc+Spring+Hibernate框架
- springMVC+spring+hibernate基本框架的搭建
- springmvc+spring+hibernate+shiro+jbpm框架搭建
- Myeclipse搭建SpringMVC-Spring-hibernate框架
- LeetCode : Longest Palindrome
- Adaptive Geometric Duality(AGD) Prior
- [统计学习方法学习笔记]1.1 统计学习
- 深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用
- 为modaldialogbox 实现pretranslatemessage
- 复习springMVC+hibernate+dubboProvider搭建框架
- linux下配置 ITK
- Hacking: The Art of Exploitation 读书笔记(二)C文件I/O
- webstorm兼容Es6
- 一篇Opus的介绍 The Rise of Opus to HD Voice Domination
- 安装oracle11g r2 RAC报Failed to create keys in the OLR
- JavaScript —— 变量作用域
- oracle11g 空表不能导出
- python常用运维脚本实例