创建 SpringMVC项目 模拟 Dubbo消费端 - 附:IDEA如何正确设置Artifacts
(神奇,明明记得之前记录过一篇,整合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.*" />
解决的思路参考: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>