DubboのSSMプロジェクトでの使用

116406 ワード

DubboのSSMプロジェクトでの使用
ケースソースのダウンロードアドレス
https://download.csdn.net/download/pcbhyy/10764704
操作手順
  • ssm統合プロジェクトを作成し、初期コード
  • を作成します.
  • この項目を2つの部分(表示層の一部、ビジネスロジック、データアクセス層の一部)
  • に分割する.
  • は、dubboを介して表示レイヤ内のビジネスロジックレイヤ内のコンポーネント(キー)
  • にアクセスする.
    Dubboの概要
    Dubboはアリババ社がオープンソースした高性能の優れたサービスフレームワークであり、アプリケーションが高性能のRPCを通じてサービスの出力と入力機能を実現し、Springフレームワークとシームレスに統合することができる.
  • Provider暴露サービス側を「サービスプロバイダ」と呼ぶ.
  • Consumerは、リモート・サービス側を「サービス消費者」と呼ぶ.
  • Registryサービス登録と発見されたセンターディレクトリサービスを「サービス登録センター」と呼ぶ.
  • Monitorは、サービスの呼び出し回数と呼び出し時間を統計するログ・サービスを「サービス監視センタ」と呼ぶ.

  • 一、項目分割
  • 分割内容:web.xml pom.xml springmvc.xml applicationContext.xml部分プロファイルの削除コードの削除
  • は層項目1)pomを表す.xml(注意:dubbo、zookeeperの依存が追加されました)
  • <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.0modelVersion>
    			<groupId>com.yygroupId>
    			<artifactId>ssm_dept2_vcartifactId>
    			<version>0.0.1-SNAPSHOTversion>
    			<packaging>warpackaging>
    			<build>
    				<resources>
    					<resource>
    						<directory>src/main/javadirectory>
    						<excludes>
    							<exclude>**/*.javaexclude>
    						excludes>
    					resource>
    					<resource>
    						<directory>src/main/resourcesdirectory>
    					resource>
    				resources>
    				<plugins>
    					
    					<plugin>
    						<groupId>org.apache.maven.pluginsgroupId>
    						<artifactId>maven-resources-pluginartifactId>
    						<version>2.7version>
    						<configuration>
    							<encoding>UTF-8encoding>
    						configuration>
    					plugin>
    					
    					<plugin>
    						<groupId>org.apache.maven.pluginsgroupId>
    						<artifactId>maven-compiler-pluginartifactId>
    						<version>3.2version>
    						<configuration>
    							<source>1.8source>
    							<target>1.8target>
    							<encoding>UTF-8encoding>
    						configuration>
    					plugin>
    					<plugin>
    						<groupId>org.apache.tomcat.mavengroupId>
    						<artifactId>tomcat7-maven-pluginartifactId>
    						<version>2.2version>
    						<configuration>
    							
    							<path>/path>
    							
    							<port>8090port>
    							<uriEncoding>utf-8uriEncoding>
    						configuration>
    					plugin>
    				plugins>
    			build>
    			<dependencies>
    				<dependency>
    					<groupId>junitgroupId>
    					<artifactId>junitartifactId>
    					<version>4.12version>
    				dependency>
    				<dependency>
    					<groupId>log4jgroupId>
    					<artifactId>log4jartifactId>
    					<version>1.2.17version>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-contextartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>aopalliancegroupId>
    					<artifactId>aopallianceartifactId>
    					<version>1.0version>
    				dependency>
    				<dependency>
    					<groupId>org.aspectjgroupId>
    					<artifactId>aspectjweaverartifactId>
    					<version>1.8.10version>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-txartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-jdbcartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-ormartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    
    
    				<dependency>
    					<groupId>org.mybatisgroupId>
    					<artifactId>mybatis-springartifactId>
    					<version>1.2.2version>
    				dependency>
    				<dependency>
    					<groupId>jstlgroupId>
    					<artifactId>jstlartifactId>
    					<version>1.2version>
    				dependency>
    				
    				<dependency>
    					<groupId>javax.servletgroupId>
    					<artifactId>javax.servlet-apiartifactId>
    					<version>3.1.0version>
    					<scope>providedscope>
    				dependency>
    				
    				<dependency>
    					<groupId>javax.servlet.jspgroupId>
    					<artifactId>jsp-apiartifactId>
    					<version>2.2version>
    					<scope>providedscope>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-webmvcartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    
    				
    				<dependency>
    					<groupId>org.slf4jgroupId>
    					<artifactId>slf4j-log4j12artifactId>
    					<version>1.7.25version>
    				dependency>
    
    				<dependency>
    					<groupId>org.hibernategroupId>
    					<artifactId>hibernate-validatorartifactId>
    					<version>5.4.1.Finalversion>
    				dependency>
    				<dependency>
    					<groupId>javax.validationgroupId>
    					<artifactId>validation-apiartifactId>
    					<version>1.1.0.Finalversion>
    				dependency>
    				
    				<dependency>
    					<groupId>org.jboss.logginggroupId>
    					<artifactId>jboss-loggingartifactId>
    					<version>3.3.1.Finalversion>
    				dependency>
    				
    				<dependency>
    					<groupId>com.fasterxmlgroupId>
    					<artifactId>classmateartifactId>
    					<version>1.3.3version>
    				dependency>
    				<dependency>
    					<groupId>commons-fileuploadgroupId>
    					<artifactId>commons-fileuploadartifactId>
    					<version>1.3.2version>
    				dependency>
    				<dependency>
    					<groupId>com.fasterxml.jackson.coregroupId>
    					<artifactId>jackson-databindartifactId>
    					<version>2.8.8.1version>
    				dependency>
    				<dependency>
    					<groupId>com.github.pagehelpergroupId>
    					<artifactId>pagehelperartifactId>
    					<version>5.0.0version>
    				dependency>
    				<dependency>
    					<groupId>com.alibabagroupId>
    					<artifactId>dubboartifactId>
    					<version>2.5.3version>
    				dependency>
    				<dependency>
    					<groupId>org.apache.zookeepergroupId>
    					<artifactId>zookeeperartifactId>
    					<version>3.4.7version>
    				dependency>
    				<dependency>
    					<groupId>com.github.sgroschupfgroupId>
    					<artifactId>zkclientartifactId>
    					<version>0.1version>
    				dependency>
    			dependencies>
    		project>
    

    2)web.xml(注意:リスナーとコンテキストパラメータが削除されました)
    
    		<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_2_5.xsd" version="2.5">
    		  <display-name>spring_demodisplay-name>
    		  <welcome-file-list>
    			<welcome-file>index.jspwelcome-file>
    		  welcome-file-list>
    		  
    		  <filter>
    			<filter-name>CharacterEncodingFilterfilter-name>
    			<filter-class>
    				org.springframework.web.filter.CharacterEncodingFilter
    			filter-class>
    			<init-param>
    				<param-name>encodingparam-name>
    				<param-value>utf-8param-value>
    			init-param>
    		  filter>
    		  
    		  <filter-mapping>
    			<filter-name>CharacterEncodingFilterfilter-name>
    			<url-pattern>/*url-pattern>
    		  filter-mapping>
    		  
    		  <servlet>
    			<servlet-name>DispatcherServletservlet-name>
    			<servlet-class>
    				org.springframework.web.servlet.DispatcherServlet
    			servlet-class>
    			<init-param>
    			  <param-name>contextConfigLocationparam-name>
    			  <param-value>classpath:springmvc.xmlparam-value>
    			init-param>
    		  servlet>
    		  <servlet-mapping>
    			<servlet-name>DispatcherServletservlet-name>
    			<url-pattern>/url-pattern>
    		  servlet-mapping>  
    		web-app>
    

    3)アプリケーションContextを削除する.xml、db.properties、SqlMapConfig.xml 3つのプロファイル4)はcomを削除する.yy.mapperパッケージとcom.yy.サービスパッケージの実装クラス(インタフェースが残っている)3.ビジネスロジックとデータアクセス層プロジェクト1)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.0modelVersion>
    			<groupId>com.yygroupId>
    			<artifactId>ssm_dept2_martifactId>
    			<version>0.0.1-SNAPSHOTversion>
    			<packaging>warpackaging>
    			<build>
    				<resources>
    					<resource>
    						<directory>src/main/javadirectory>
    						<excludes>
    							<exclude>**/*.javaexclude>
    						excludes>
    					resource>
    					<resource>
    						<directory>src/main/resourcesdirectory>
    					resource>
    				resources>
    				<plugins>
    					
    					<plugin>
    						<groupId>org.apache.maven.pluginsgroupId>
    						<artifactId>maven-resources-pluginartifactId>
    						<version>2.7version>
    						<configuration>
    							<encoding>UTF-8encoding>
    						configuration>
    					plugin>
    					
    					<plugin>
    						<groupId>org.apache.maven.pluginsgroupId>
    						<artifactId>maven-compiler-pluginartifactId>
    						<version>3.2version>
    						<configuration>
    							<source>1.8source>
    							<target>1.8target>
    							<encoding>UTF-8encoding>
    						configuration>
    					plugin>
    					<plugin>
    						<groupId>org.apache.tomcat.mavengroupId>
    						<artifactId>tomcat7-maven-pluginartifactId>
    						<version>2.2version>
    						<configuration>
    							
    							<path>/path>
    							
    							<port>8089port>
    
    							<uriEncoding>utf-8uriEncoding>
    						configuration>
    					plugin>
    				plugins>
    			build>
    			<dependencies>
    				<dependency>
    					<groupId>junitgroupId>
    					<artifactId>junitartifactId>
    					<version>4.12version>
    				dependency>
    				<dependency>
    					<groupId>log4jgroupId>
    					<artifactId>log4jartifactId>
    					<version>1.2.17version>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-contextartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>aopalliancegroupId>
    					<artifactId>aopallianceartifactId>
    					<version>1.0version>
    				dependency>
    				<dependency>
    					<groupId>org.aspectjgroupId>
    					<artifactId>aspectjweaverartifactId>
    					<version>1.8.10version>
    				dependency>
    				<dependency>
    					<groupId>commons-dbcpgroupId>
    					<artifactId>commons-dbcpartifactId>
    					<version>1.4version>
    				dependency>
    				<dependency>
    					<groupId>mysqlgroupId>
    					<artifactId>mysql-connector-javaartifactId>
    					<version>5.1.6version>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-txartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-jdbcartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-ormartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    				<dependency>
    					<groupId>org.mybatisgroupId>
    					<artifactId>mybatisartifactId>
    					<version>3.2.6version>
    				dependency>
    				<dependency>
    					<groupId>cglibgroupId>
    					<artifactId>cglibartifactId>
    					<version>3.2.5version>
    				dependency>
    				<dependency>
    					<groupId>org.mybatisgroupId>
    					<artifactId>mybatis-springartifactId>
    					<version>1.2.2version>
    				dependency>
    
    				<dependency>
    					<groupId>org.springframeworkgroupId>
    					<artifactId>spring-webmvcartifactId>
    					<version>4.3.8.RELEASEversion>
    				dependency>
    
    				
    				<dependency>
    					<groupId>org.slf4jgroupId>
    					<artifactId>slf4j-log4j12artifactId>
    					<version>1.7.25version>
    				dependency>
    				<dependency>
    					<groupId>org.hibernategroupId>
    					<artifactId>hibernate-validatorartifactId>
    					<version>5.4.1.Finalversion>
    				dependency>
    				<dependency>
    					<groupId>javax.validationgroupId>
    					<artifactId>validation-apiartifactId>
    					<version>1.1.0.Finalversion>
    				dependency>
    				
    				<dependency>
    					<groupId>org.jboss.logginggroupId>
    					<artifactId>jboss-loggingartifactId>
    					<version>3.3.1.Finalversion>
    				dependency>
    				
    				<dependency>
    					<groupId>com.fasterxmlgroupId>
    					<artifactId>classmateartifactId>
    					<version>1.3.3version>
    				dependency>
    				<dependency>
    					<groupId>com.github.pagehelpergroupId>
    					<artifactId>pagehelperartifactId>
    					<version>5.0.0version>
    				dependency>
    				<dependency>
    					<groupId>com.alibabagroupId>
    					<artifactId>dubboartifactId>
    					<version>2.5.3version>
    				dependency>
    				<dependency>
    					<groupId>org.apache.zookeepergroupId>
    					<artifactId>zookeeperartifactId>
    					<version>3.4.7version>
    				dependency>
    				<dependency>
    					<groupId>com.github.sgroschupfgroupId>
    					<artifactId>zkclientartifactId>
    					<version>0.1version>
    				dependency>
    			dependencies>
    		project>
    
  • web.xml(フロントエンドコントローラサーブレットの構成を削除)
  • 
    		<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_2_5.xsd" version="2.5">
    		  <display-name>spring_demodisplay-name>
    		  <welcome-file-list>
    			<welcome-file>index.jspwelcome-file>
    		  welcome-file-list>
    		  
    		  <filter>
    			<filter-name>CharacterEncodingFilterfilter-name>
    			<filter-class>
    				org.springframework.web.filter.CharacterEncodingFilter
    			filter-class>
    			<init-param>
    				<param-name>encodingparam-name>
    				<param-value>utf-8param-value>
    			init-param>
    		  filter>
    		  
    		  <filter-mapping>
    			<filter-name>CharacterEncodingFilterfilter-name>
    			<url-pattern>/*url-pattern>
    		  filter-mapping> 
    		  
    		  <context-param>
    			<param-name>contextConfigLocationparam-name>
    			<param-value>classpath:applicationContext.xmlparam-value>
    		  context-param>
    		  <listener>
    			<listener-class>
    				org.springframework.web.context.ContextLoaderListener
    			listener-class>
    		  listener>
    		web-app>
    

    3)springmvcを削除した.xml 4)comを削除した.yy.コントローラパッケージとすべてのjspページ
    二、linuxにzookeeperをインストールする
    1)テストjava环境java-version 2)SSHアップロードヒント:encountered 1 errors during the transferエラー解决方法アップロード时にwindowsのパスに括弧「()」が存在しないので、括弧を外してアップロードすればよいか、括弧をつけない経路でファイルを正常にアップロードすることができます.
    3)zookeeperはjavaが開発したwindows、linux環境で実行できる.まずjdkをインストールする必要があります.インストール手順:第1ステップ:jdkをインストールする第2ステップ:zookeeperの圧縮パッケージをlinuxシステムにアップロードします.ステップ3:圧縮パッケージの解凍
    tar -zxvf zookeeper-3.4.6.tar.gz
    

    ステップ4:zookeeper-3.4に入ります.6ディレクトリ、dataフォルダを作成します.
    mkdir data
    

    ステップ5:confフォルダに入りzoo_sample.cfgはzooと改名した.cfg
    [root@localhost conf]# mv zoo_sample.cfg zoo.cfg
    

    ステップ6:zooを編集します.cfg(vim zoo.cfg)、data属性を変更する:dataDir=/root/zookeeper-3.4.6/data 7ステップ:zookeeperを起動する
    [root@localhost bin]# ./zkServer.sh start
    

    オフ:
    [root@localhost bin]# ./zkServer.sh stop
    

    ステータスの表示:
    [root@localhost bin]# ./zkServer.sh status
    
              :
    
    	JMX enabled by default
    	Using config: /root/zookeeper-3.4.6/bin/../conf/zoo.cfg
    	Mode: standalone
    

    注意:ファイアウォールを閉じる必要があります.
    service iptables stop
    

    永続的にシャットダウンします.設定を変更して起動します.ファイアウォールを起動しません.
    chkconfig iptables off
    

    zookeeperを正常に起動できない場合は、dataディレクトリの下のzookeeperを削除する必要があります.server.pidファイル.
    三、dubboを通じて表示層の中で業務論理層の中のコンポーネントにアクセスする
  • ビジネスロジックプロジェクトのパブリッシュコンポーネント(アプリケーションContext.xmlに追加)
  • 
    <dubbo:application name="ssm_dept2_m"/>
    
    
    <dubbo:registry protocol="zookeeper" address="192.168.220.129:2181">dubbo:registry>
    
    
    <dubbo:protocol name="dubbo" port="20880" />
    
    
    <dubbo:service interface="com.yy.service.DeptService" ref="deptServiceImpl">dubbo:service>
    <dubbo:service interface="com.yy.service.EmpService" ref="empServiceImpl">dubbo:service>
    
  • 表示レイヤ項目で参照コンポーネント(springmvc.xmlに追加)
  • 
    
    <dubbo:application name="ssm_dept2_vc"/>
    
    <dubbo:registry protocol="zookeeper" address="192.168.220.129:2181">dubbo:registry>
    
    
    <dubbo:reference interface="com.yy.service.DeptService" id="deptService">dubbo:reference>
    <dubbo:reference interface="com.yy.service.EmpService" id="empService">dubbo:reference>
    
  • まずビジネスロジックプロジェクトを起動し、表示レイヤプロジェクトを起動する(注意:両プロジェクトのtomcatのポート番号が異なることを変更する)
  • ブラウザでactionにアクセスし、
  • をテストします.
    四、説明
    Dubboって何?
    Dubboは分散型サービスフレームワークであり、高性能と透明化されたRPCリモートサービスコールスキーム、およびSOAサービスガバナンススキームの提供に力を入れています.簡単に言えば、dubboはサービスフレームワークであり、分布式の需要がなければ、実際には必要ありません.分布式の時だけ、dubboがあります.
    このような分散型サービスフレームワークのニーズは、本質的にサービス呼び出しの東であり、はっきり言ってリモートサービス呼び出しの分散型フレームワーク(WebサービスモードのWSDlに別れを告げ、サービス者と消費者の方法でdubboに登録する)の核心部分には、次のようなものが含まれています.
  • リモート通信:複数のスレッドモデル、シーケンス化、および「要求応答」モードを含む複数の長接続ベースのNIOフレームワークを抽象的にカプセル化する情報交換方式を提供する.
  • クラスタフォールト:マルチプロトコルサポート、およびソフト負荷等化、失敗フォールトフォールト、アドレスルーティング、動的構成などのクラスタサポートを含む、インタフェース・メソッドに基づく透明なリモート・プロシージャ・コールを提供します.
  • 自動発見:登録センターディレクトリサービスに基づいて、サービス消費者がサービス提供者を動的に検索することができ、アドレスを透明にし、サービス提供者が機械を滑らかに増加または減少させることができる.

  • Dubboは何ができますか?
  • 透明化されたリモートメソッド呼び出しは、ローカルメソッドを呼び出すようにリモートメソッドを呼び出し、簡単な構成でAPI侵入はありません.
  • ソフト負荷等化及びフォールトトレランス機構は、F 5などのハードウェア負荷等化器の代わりにイントラネットで代替でき、コストを低減し、単点を低減できる.
  • サービス自動登録と発見は、サービスプロバイダアドレスを書き込む必要がなくなり、登録センターはインタフェース名に基づいてサービスプロバイダのIPアドレスを照会し、サービスプロバイダの追加または削除をスムーズにすることができる.