下午在搭建一个基于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服务端打包注意事项的更多相关文章

  1. dubbo服务端,dubbo客户端,注册中心(zk)之间的心跳

    dubbo客户端和dubbo服务端之间存在心跳,由dubbo客户端主动发起,可参见dubbo源码 HeartbeatTask. dubbo服务端和注册中心(zk)存在心跳,由dubbo服务端发起,这是 ...

  2. vue服务端打包及自动部署

    上次给CI环境搭建好了,这次写了一个脚本用于服务端打包及部署使用,解决了前端需要频繁打包的问题,即时将代码推到工程库,服务端自动打包作发布,然后测试人员即时测试,尽早发现问题. 发布原理: 我没有通过 ...

  3. dubbo服务端响应超时错误一例记录

    错误描述: Portlet J2AppsPortlet::QuickStartPortlet not available: Waiting server-side response timeout. ...

  4. 源码分析--dubbo服务端暴露

    服务暴露的入口方法是 ServiceBean 的 onApplicationEvent.onApplicationEvent 是一个事件响应方法,该方法会在收到 Spring 上下文刷新事件后执行服务 ...

  5. Dubbo服务端结合maven打jar包

    <build>        <finalName>odao-weixin-user</finalName>        <resources>   ...

  6. Visual Studio 2015 Bowser Link的功能不停的向服务端发送请求

    Visual Studio 2015新建的mvc项目 默认在每个视图上生成一些JavaScript脚本

  7. 监控与管理dubbo服务

    Dubbo是阿里多年前开源的一套服务治理框架,在众多互联网企业里应用广泛.本文介绍了一些如何监控与管理dubbo服务.使用的工具与<dubbox 的各种管理和监管>大致相同,本文更侧重于命 ...

  8. Python服务Debian打包新思路

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Debian 打包一直是比较冷僻的技术,大部分同学都不会接触到它. 但是我们 Debian 服务器上安装的各 ...

  9. Spring Cloud Alibaba(四)实现Dubbo服务消费

    本项目演示如何使用 Spring Cloud Alibaba 完成 Dubbo 的RPC调用. Spring Cloud与Dubbo Spring Cloud是一套完整的微服务架构方案 Dubbo是国 ...

随机推荐

  1. ios Swift 资源池

    Swift入门教程: http://www.cocoachina.com/applenews/devnews/2014/0604/8661.html Swift视频教程: http://www.coc ...

  2. 第十篇、自定义UIBarButtonItem和UIButton block回调

    // 自定义导航栏左边按钮 self.navigationItem.leftBarButtonItem = [JQBlockedBarButtonItem blockedBarButtonItemWi ...

  3. GCD学习之dispatch_barrier_async

    iOS常见的多线程开发方式有NSThread.NSOPeration和GCD,抽象程度依次提高,GCD是最抽象的,使用起来最简单,但相对来说功能有限,比如不能cancel任务,这也算是一点遗憾吧. 今 ...

  4. IOS-7步学会用代理

    代理:又叫委托 自己不能去办的事委托给别人去办 之前学过的 UIAlertView UITextField都是使用了代理 反向传值代理 代理Block 写代理的步骤 需要帮忙的人(请求帮代饭的人) 1 ...

  5. 使用resumable.js上传大文件(视频)兵转换flv格式

    前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Video.asp ...

  6. android 登陆案例

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABEMAAAJuCAIAAADU3FtnAAAgAElEQVR4nOydZ3Rc1dX3nbXez2+erC

  7. Java实战之04JavaWeb-07Listener和Filter

    一.监听器Listener javaEE的13们规范中 包括servlet技术和jsp技术 servlet规范中包括三门技术:(servlet的三大组件) servelt技术  Listener技术 ...

  8. config spec

    config_spec Rules for selecting versions of elements to appear in a view APPLICABILITY Product Comma ...

  9. python 自动化之路 day 05

    内容目录: 列表生成式.迭代器&生成器 装饰器 软件目录结构规范 模块初始 常用模块 1.列表生成式,迭代器&生成器 列表生成式 需求:列表[0, 1, 2, 3, 4, 5, 6, ...

  10. syntax error near unexpected token `then'

    #!/bin/bashclearfunction test{   if[$1 -eq "root"]&&[$2 -eq "123456"]    ...