被IDEA的打包功能打败了:dubbo服务端打包注意事项
下午在搭建一个基于dubbo和spring的服务端项目。结果打包成jar后各种报错。
起初是因为idea的机制,导致META-INF下自己的Mainfest.mf总是莫名被覆盖,于是报找不到主函数。后来利用artfacts-》jar-》empty方式配置jar包,并把META-INF文件夹和mainfest.mf文件放在rescorces文件夹下解决了。
后来是dubbo已经停止维护,所以xds文件通过url已经拿不到了,查资料发现dubbo.jar里是带有xds文件的,spring怎么读不到呢? 原来又是idea的打包功能的坑,jar包下的META-INF目录下,有两个跟spring相关的文件:spring.handlers、spring.schemas,里面都只包含了一条配置,其他的xds配置都不见了!!
无奈,还是用maven吧,于是用 maven的shade打包插件来搞定
在stackoverflow上找到了答案:http://stackoverflow.com/questions/1937767/spring-3-0-unable-to-locate-spring-namespacehandler-for-xml-schema-namespace
下面的是pom.xml中关于打包部分的配置,可以看见配置了spring.handlers和srping.schemas并且直接指定main入口。
另外需要注意的是dubbo只能认META-INF/srping目录下的xml文件为spring配置文件。所以要自己建立一个META-INF/spring目录结构,把spring配置文件放进去,然后把这个目录结构再给扔到idea标记为resources的文件夹下,通常就是src/main/resources/META-INF/srping/applicationContent.xml 啦,这样一打包spring配置文件才能刚好满足dubbo的奇葩要求。
<build>
<finalName>org.yueue.vita</finalName> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version> 1.7.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.alibaba.dubbo.container.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins></build>
被IDEA的打包功能打败了:dubbo服务端打包注意事项的更多相关文章
- dubbo服务端,dubbo客户端,注册中心(zk)之间的心跳
dubbo客户端和dubbo服务端之间存在心跳,由dubbo客户端主动发起,可参见dubbo源码 HeartbeatTask. dubbo服务端和注册中心(zk)存在心跳,由dubbo服务端发起,这是 ...
- vue服务端打包及自动部署
上次给CI环境搭建好了,这次写了一个脚本用于服务端打包及部署使用,解决了前端需要频繁打包的问题,即时将代码推到工程库,服务端自动打包作发布,然后测试人员即时测试,尽早发现问题. 发布原理: 我没有通过 ...
- dubbo服务端响应超时错误一例记录
错误描述: Portlet J2AppsPortlet::QuickStartPortlet not available: Waiting server-side response timeout. ...
- 源码分析--dubbo服务端暴露
服务暴露的入口方法是 ServiceBean 的 onApplicationEvent.onApplicationEvent 是一个事件响应方法,该方法会在收到 Spring 上下文刷新事件后执行服务 ...
- Dubbo服务端结合maven打jar包
<build> <finalName>odao-weixin-user</finalName> <resources> ...
- Visual Studio 2015 Bowser Link的功能不停的向服务端发送请求
Visual Studio 2015新建的mvc项目 默认在每个视图上生成一些JavaScript脚本
- 监控与管理dubbo服务
Dubbo是阿里多年前开源的一套服务治理框架,在众多互联网企业里应用广泛.本文介绍了一些如何监控与管理dubbo服务.使用的工具与<dubbox 的各种管理和监管>大致相同,本文更侧重于命 ...
- Python服务Debian打包新思路
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Debian 打包一直是比较冷僻的技术,大部分同学都不会接触到它. 但是我们 Debian 服务器上安装的各 ...
- Spring Cloud Alibaba(四)实现Dubbo服务消费
本项目演示如何使用 Spring Cloud Alibaba 完成 Dubbo 的RPC调用. Spring Cloud与Dubbo Spring Cloud是一套完整的微服务架构方案 Dubbo是国 ...
随机推荐
- 40个Java集合面试问题和答案【下】【转载】
接上文:http://www.cnblogs.com/xujianbo/p/5148083.html 28.哪些集合类是线程安全的? Vector.HashTable.Properties和Stack ...
- Ant 入门
参考: Ant官网 http://ant.apache.org/ 轻量级java ee企业应用实战(李刚) Ant当前版本1.9.6 Ant基于Java 配置环境变 ...
- IO流07_输入输出流总体系
[javaIO体系中常用的流] [关于字符流和字节流的注意点] 通常,字节流比字符流功能更加强大,因为字节流可以处理所有的二进制文件. 但是字节流来处理字符,又需要将字节转换成字符,增加了编程复杂度. ...
- 英语中的 姓氏/Surname
.Chomsky (Belarusian: Хомскі, Russian: Хомский, Ukrainian: Хомський, Hebrew: חומסקי, "from (V ...
- mysql innodb 数据打捞(二)innodb 页面打捞编程
有了页面的结构和特征,需要编程实现数据库页面的打捞工作: 为了方便windows and linux 的通用,计划做成C语言的控制台应用,并且尽量只用ansi c;关于多线程,计划做成多线程的程序,最 ...
- HTML5 Video与Audio 视频与音频
---- 视频Video对象 - 指定视频播放地址 <video width="320" height="240" controls="cont ...
- sea.js说明文档
Sea.js 手册与文档 首页 | 索引 目录 模块定义 define id dependencies factory exports require require.async require.re ...
- socket 基础学习
这个示例程序是同步套接字程序,功能很简单,只是客户端发给服务器一条信息,服务器向客户端返回一条信息:这里只是一个简单的示例,是一个最基本的socket编程流程,在接下来的文章中,会依次记录套接字的同步 ...
- mysql 远程连接 2003 Can't connect to MySQL server (10060)
mysql server 端的端口被防火墙挡出,没有开放
- Timer组件
1.常用属性 Interval 用于获取或设置Timer组件Tick事件发生的时间间隔,属性值不能小于1 制作左右飘摇窗体 private void timer1_Tick(object sender ...