创建 SpringMVC项目 模拟 Dubbo消费端

(神奇,明明记得之前记录过一篇,整合tomcat jar、war。。的文章,找不到了,所有特意记录一下,以下摘自txt记录文档)

先自己新建了项目,把dubbo-consumer.xml 配置 和 mvc 配置 是分开的,,,坑来了。。。

1、启动不了,报各种错的那种,log、lifeCycle。。。

先是自己各种配置Artifact、deployed都是启动报错

后面用在IDEA配tomcat里面,用提示自动配的好了。。。。


》》》Project Setting -- Artifacts:

(a)先:+ Web Application -- Exploded(第二个) -- From Modules -- 选中,(选完里面把路径改到target下)

》》》(大功告成)项目报500了。。。,而且压根不必要配别的,就是接下来的Artifacts的那个

500的错还算明显,mvc.xml里面配了限制文件上传bean,却没有用到的地方。。。

---------后面,maven clean了一次之后,又全部404了,,,,,且tomcat webapp下面没有看到war包什么的。。。

(b)于是,+ Web Application -- Exploded(第三个) -- From 上面的exploded -- 选中(第一次忘了改路径,还是404),
路径改到target下面后,还是404,且tomcat webapp 和 target下面文件没有变化(即没有出现war包什么的)

再于是,把tomcat里面的配置改成了(b)配置的war包,并改路径 / 。。。。还是404

=============苦逼脸,,,,最后包jar包配置全部删了,又配成了(a)一样的,包括tomcat,启动,都OK了,dubbo也是好的(最终解决方案)
=======有很多神奇的东西,是无法用人类来解释的,,,(大概怀疑是tomcat存在缓存机制,但是一脸懵逼啊2019-07-10 18:45)

2、又遇到了下一个问题:全部报404

在mvc.xml 里面加上了两行配置,且同时把tomcat配置里面,Deploy里面,长长的jar包名称改成 单斜杆 / 了;
<mvc:default-servlet-handler/>
<mvc:annotation-driven />

3、、、、、、好了,controller可以正常访问了,但是 NPE 它来啦。。。

最终解决参考:https://www.cnblogs.com/taohaijun/p/9039684.html,就是把 mvc 和 dubbo 的 xml 配置放一起,,,开始循环404、404、404。。。

=============上面的只是在一个demo上的测试,于是把上面的配置移到了公司的项目里面(配置多、maven多层那种),,,NPE,,,它又来了,,,

发现把dubbo的配置放在 mvc 扫描 之前,还是不行,,,

第二天早上来,又通读了几篇博文,发现最终的解决办法是漏了一个注解启动标签:<dubbo:annotation />,所以最终spring-mvc.xml整合dubbo的配置是:

<!--<mvc:annotation-driven />-->

    <!-- 这里一定不能少,但demo项目并没有也是OK的,大神请赐教 -->
    <dubbo:annotation />
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="meerkat-web-consumer"  />
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://localhost:2181" />
    <dubbo:annotation package="com.meerkat.web.control.*"/>

    <context:component-scan base-package="com.meerkat.*" />
MVC整合dubbo的配置

解决的思路参考:https://blog.csdn.net/qq_16414307/article/details/50328481

另外,对spring启动配置文件加载顺序不了解的可以看看这篇:https://blog.csdn.net/lchpersonal521/article/details/81837583,而且这篇文章讲的是如何用JavaBean的配置dubbo

当然,最后也附上有关pom配置:

<!-- dubbo集成包-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.12</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.0</version>
        </dependency>
        <!-- 自己打包发布的服务接口,api -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>dubbo-api</artifactId>
            <version>1.2.0</version>
        </dependency>
引入dubbo有关的pom包
原文地址:https://www.cnblogs.com/zz-3m23d-begining/p/11165856.html