Coder Social home page Coder Social logo

dangdangdotcom / dubbox Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apache/dubbo

4.9K 4.9K 2.1K 7.18 MB

Dubbox now means Dubbo eXtensions, and it adds features like RESTful remoting, Kyro/FST serialization, etc to the Dubbo service framework.

Home Page: http://dangdangdotcom.github.io/dubbox

License: Apache License 2.0

Java 98.32% CSS 0.33% JavaScript 1.11% Shell 0.13% Thrift 0.01% Batchfile 0.07% Lex 0.04%

dubbox's People

Contributors

beyondyuefei avatar bladehd avatar bohrqiu avatar crnlmchina avatar dinguangx avatar donhui avatar ian4hu avatar joecao avatar kangfoo avatar kiminotes avatar li-shen avatar liangfei0201 avatar linxuan-hqm avatar majinkai avatar oldratlee avatar pzsoftchen avatar wangchangbing avatar waylink avatar wuwen5 avatar xurenjie avatar yangqiju avatar yuwgle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dubbox's Issues

将dubbox2.8.4发布到Nexus私服上失败

我按照Demo应用简单运行指南里的方法尝试编译一下dubbo,这个没问题,但是我接下来在pom.xml里增加


nexus-releases
http://yourhostname:8081/nexus/content/repositories/releases/


nexus-snapshots
http://yourhostname:8081/nexus/content/repositories/snapshots/

然后执行mvn deploy

问题出来了
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on project dubbo-common: There are test failures.

请问一下这是怎么回事?

ReaderInterceptor不起作用

@Priority(Priorities.USER)
public class DemoInterceptor implements ReaderInterceptor, WriterInterceptor {

    public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException, WebApplicationException {
        System.out.println("Reader interceptor invoked");

        return context.proceed();
    }

    public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {
        System.out.println("Writer interceptor invoked");
        context.proceed();
    }
}

按照官方例子,却发现ReaderInterceptor不起作用,只打印出"Writer interceptor invoked",断点也无法捕获在对应位置,可以证明确实是没有调用。

请问如何解决?

在更新Dubbo核心代码的同时能否把示例等也更新起来,打包提供?

最近准备玩一下Dubbo。看的文档还是原来的Dubbo文档。当准备用最新版的DubboX搭建时,却发现没有提供相应的压缩包。

在原来的文档中提供的可用包如下:

  1. 核心框架 dubbo-2.5.3.jar
  2. 管理控制台 dubbo-admin-2.5.3.war
  3. 简易监控中心 dubbo-monitor-simple-2.5.3-assembly.tar.gz
  4. 简易注册中心 dubbo-registry-simple-2.5.3-assembly.tar.gz
  5. 示例提供者 dubbo-demo-provider-2.5.3-assembly.tar.gz
  6. 示例消费者 dubbo-demo-consumer-2.5.3-assembly.tar.gz

spring 3.2.9.RELEASE 升级到最新的 spring 4.2.3.RELEASE

dubbox可以支持最新版本的spring,需修改两处地方:

  1. dubbo-parent 下的pom.xml 文件中修改:


    <spring.bom.version>4.2.3.RELEASE</spring.bom.version>
  2. dubbo-rpc-http 项目中,修改HttpProtocol类的第132行:
    // CommonsHttpInvokerRequestExecutor httpInvokerRequestExecutor = new CommonsHttpInvokerRequestExecutor();
    HttpComponentsHttpInvokerRequestExecutor httpInvokerRequestExecutor = new HttpComponentsHttpInvokerRequestExecutor();

注释并引入类:
//import org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor;
import org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor;

大功告成!

Timeout or exception thrown when using kryo with optimizer

I tried to install the demo-provider on Tomcat and write a standalone java client to test the interface "bidService". If I use the fst or default serialization (should be hessian-lite I think), it works well.

However, when I change the serialization to kryo with optimizer, the client throws a KryoException as follows:

Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method bid in the service com.alibaba.dubbo.demo.bid.BidService. Tried 3 times of the providers [172.17.0.9:20881] (1/1) from the registry 192.168.1.133:49182 on the consumer 172.17.0.9 using the dubbo version 2.8.3. Last error is: Failed to invoke remote method: bid, provider: dubbo://172.17.0.9:20881/com.alibaba.dubbo.demo.bid.BidService?anyhost=true&application=consumer-of-atman-demo-provider&check=false&dubbo=2.8.3&generic=false&interface=com.alibaba.dubbo.demo.bid.BidService&methods=throwNPE,bid&optimizer=com.alibaba.dubbo.demo.SerializationOptimizerImpl&organization=dubbox&owner=programmer&pid=2800&revision=2.8.3&serialization=kryo&side=consumer×tamp=1418112866307, cause: java.io.IOException: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 55
java.io.IOException: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 55
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:127)
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:140)
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:151)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:85)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:117)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:100)
    at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134)
    at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)
    at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134)
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:351)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 55
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:119)
    at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:641)
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:752)
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:125)
    ... 22 more

    at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
    at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
    at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
    at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
    at com.alibaba.dubbo.common.bytecode.proxy1.bid(proxy1.java)
    at com.atman.dubbo.demo.consumer.Consumer.main(Consumer.java:22)
Caused by: com.alibaba.dubbo.remoting.RemotingException: java.io.IOException: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 55
java.io.IOException: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 55
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:127)
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:140)
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:151)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:85)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:117)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:100)
    at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134)
    at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)
    at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134)
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:351)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 55
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:119)
    at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:641)
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:752)
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:125)
    ... 22 more

    at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:190)
    at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:110)
    at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:84)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:96)
    at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:144)
    at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74)
    at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
    at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
    at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
    at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
    at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77)
    ... 5 more

I tried to write a new service and deploy on the different tomcat. The optimizer returns an empty collection. Something weird happens. The client throws timeout exception.

If I remove the optimizer attribute from the protocol definition, two exceptions above disappear.

I tried to deploy the provider in the standalone java application, it works well with the optimizer attribute.

  1. fst with optimizer, works for tomcat and standalone provider.
  2. kryo without optimizer, works for tomcat and standalone provider.
  3. kryo with optimizer, works for standalone provider.
  4. kryo with optimizer (demo provider), doesn't work for tomcat (KryoException or TimeoutException)
  5. kryo with optimizer (my new service), doesn't work for tomcat

Any clue for this?

依赖包问题

我看到当当网这边pom依赖还是阿里那边的啊?
比如
com.alibaba
hessian-lite
${hessian_lite_version}

这个依赖在maven是找不到的,麻烦问一下当当网这边怎么处理?

Dubbox服务被多次调用

通过Dubbox调用一个服务时,出现服务被多次调用的问题(出现的几率很低。出现时一般是调用两次,有时会被调用三次,然后返回最后一次调用的结果)
我可以通过什么方式去调试问题的原因?

Dubbox 版本:2.8.4
Zookeeper版本:3.4.6 standalone
Ubuntu14.04
java version "1.7.0_75"

dubbox/rest.html文档中有笔误

在文档 http://dangdangdotcom.github.io/dubbox/rest.html
如下原文:

如前所述,这种场景下必须把JAX-RS的annotation添加到服务接口上,这样在dubbo在消费端才能共享相应的REST配置信息,并据之做远程调用:

@Path("users")
public interface UserService {

    @GET
    @Path("{id : \\d+}")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON})
    User getUser(@PathParam("id") Long id);
}

中的 ”MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON“ 根据上下文意思应该是”MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML“
请修正。

mvn install -Dmaven.test.skip=true安装报错

mvn install -Dmaven.test.skip=true安装报错

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
3.2:compile (default-compile) on project dubbo-rpc-webservice: Compilation failu
re: Compilation failure:
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[28,35] 错误: 程序包org.
apache.cxf.bus.extension不存在
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[29,30] 错误: 程序包org.
apache.cxf.endpoint不存在
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
Administrator@PC-20140808CLEA /D/Work/git/dubbox (master)33,33] 错误: 程序包org.
$ mvn install -Dmaven.test.skip=true
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[62,18] 错误: 找不到符号

[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[62,48] 错误: 找不到符号

[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[64,58] 错误: 无法访问Bu
s
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[69,14] 错误: 找不到符号

[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[94,73] 错误: 无法访问Ab
stractTransportFactory
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[112,25] 错误: 无法访问A
bstractEndpointFactory
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[116,25] 错误: 找不到符
号
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[117,29] 错误: 无法访问S
erver
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[128,21] 错误: 无法访问A
bstractBasicInterceptorProvider
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[132,5] 错误: 找不到符号

[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[132,41] 错误: 无法访问C
lient
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[135,8] 错误: 无法访问TE
xtensibilityElementImpl
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[137,9] 错误: 无法访问Ab
stractConduit
[ERROR] \Work\git\dubbox\dubbo-rpc\dubbo-rpc-webservice\src\main\java\com\alibab
a\dubbo\rpc\protocol\webservice\WebServiceProtocol.java:[142,22] 错误: 找不到符
号

用kyro序列化方式调用服务传递List<T>错误

在使用kyro序列化方式失败后尝试dubbo没问题,不过dubbo传递需要实现java序列化接口
1.服务提供方配置如下:
<dubbo:protocol name="dubbo" port="20880" serialization="kryo" />
2.服务有方法(传单个对象没问题):
public void generateFileAndUploadFTP(List reconciliationDTOs)
3.ReconciliationDTO代码如下
public class ReconciliationDTO implements Serializable{
private TradeType tradeType;//枚举
private String amount;
private CurrencyType currency;//枚举
}
4.客户端配置除了没有<dubbo:protocol />配置外,其他正常,
在调用服务的时候出现下面异常:

com.esotericsoftware.kryo.KryoException: Unable to find class: 404.00
at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:127)
at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:140)
at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:139)
at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:74)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:138)
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134)
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)
at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.ClassNotFoundException:Unable to find class: 乱码 com.xxx.CurrencyType 乱码 java.lang.Enum 乱码 CNY
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:136)
... 27 more

ExceptionFilter在tomcat下问题

ExceptionFilter中

// 异常类和接口类在同一jar包里,直接抛出
String serviceFile = ReflectUtils.getCodeBase(invoker.getInterface());
String exceptionFile = ReflectUtils.getCodeBase(exception.getClass());

在tomcat下,serviceFile和exceptionFile值不相等,导致无法正确处理RuntimeException, Jetty
中可以。有什么好的处理办法吗?现在暂时使用Exception代替RuntimeException

使用mybatis延迟加载时,因为接口返回的是代理对象,导致dubbo序列化后属性值全部为null

最近想在原先的系统上使用dubbo。
系统使用的是mybatis,开启了延迟加载:

<setting name="lazyLoadingEnabled" value="true" />
<setting name="aggressiveLazyLoading" value="false" /> 

调试发现接口返回的是代理对象,所以controller(springMVC)得到的数据属性都是null。
如果关掉延迟加载,得到的数据有值了,但系统部分原有的功能受到了影响,会加载一些原先需要延迟加载的数据,且如下的树对象陷入不停循环,导致内存溢出:

    <resultMap type="BaseTreePojo" id="baseTreePojo" extends="com.lmiky.platform.sort.pojo.BaseSortPojo.baseSortPojo">
        <result column="name" property="name"/>
        <result column="leaf" property="leaf"/>
        <association property="parent" column="parentId" select="com.lmiky.platform.tree.pojo.BaseTreePojo.findById"/>
        <collection property="children" column="id" select="com.lmiky.platform.tree.pojo.BaseTreePojo.listByParent"/>
    </resultMap>

有什么尽量不修改原有系统代码的解决方法吗,dubbo是不是无法序列化代理对象,希望能帮忙回答下,谢谢。

我把dubbo序列化改为java,报如下错误:

Cannot get Configuration as configuration factory was not set.

把dubbo序列化改为dubbo,报如下错误:

[source error] no such class: com.lmiky.platform.tree.pojo.BaseTreePojo$$EnhancerByCGLIB$$82f78df2

把dubbo序列化改为kryo,报如下错误:

Caused by: java.io.NotSerializableException: org.apache.ibatis.executor.loader.cglib.CglibProxyFactory$EnhancedResultObjectProxyImpl

把dubbo序列化改为fst,没报其他错误,就是rpc超时

异步请求获取返回失败

有三个服务,两两之间通过dubbo请求,简易图如下:

A--异步-->B--同步-->C

发现A拿不到C的返回,跟踪代码发现,ContextFilter类中会把async字段透传给下一个service,导致下一个service采用异步处理,也就是B和C之间是走异步流程,同时,B接收C的返回采用同步,所以A一直获取不到C的返回。

2.8.3的依赖问题

引入2.8.3之后,会有一堆依赖包,有的还与本工程的有冲突,能提供一个默认配置的最小依赖配置么?
用2.5.3的客户端调用2.8.3的服务会出现fail decode request的错误,如果不指定dubbo.protocol.serialization=kryo,也会报没有hessian实现的错误

dubbox rest 服务的访问地址问题

demo 中配置的信息是:
< dubbo:application name="xy-demo-provider" owner="xy-demo" organization="xy"/>
< dubbo:registry address="zookeeper://10.160.0.101:2181" client="zkclient"/>
< dubbo:protocol name="rest" port="8888" contextpath="services" server="tomcat" threads="500" accepts="500"/>
< dubbo:service interface="com.xy.dubbo.demo.api.UserService" ref="userService" protocol="rest" validation="true"/>
< bean id="userService" class="com.xy.dubbo.demo.impl.UserServiceImpl" />

在本地tomcat 运行之后,访问地址为什么是本地。
不能使用注册中心的地址。

怎么解决?

client端调用REST服务提示HTTP 404 Not Found,protocol="dubbo"正常

<dubbo:reference id="bidService" interface="com.alibaba.dubbo.demo.bid.BidService"/>
<dubbo:reference id="anotherUserRestService" interface="com.alibaba.dubbo.demo.user.facade.AnotherUserRestService"/>

bidService成功注入action anotherUserRestService 404,异常如下:
vice.AnotherUserRestService, method: getUser, cause: HTTP 404 Not Found
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
at com.alibaba.dubbo.common.bytecode.proxy1.getUser(proxy1.java)
Caused by: javax.ws.rs.NotFoundException: HTTP 404 Not Found
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:181)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:154)
at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:58)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:62)
at $Proxy27.getUser(Unknown Source)
at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)

官网dubbo-monitor-simple的启动shell脚本错误

通过sh -n start.sh提示start.sh: line 88: syntax error: unexpected end of file
官网提供的monitor在Linux环境下运行不了,但是bat在windows下运行到是没问题!请问是否提供的start.sh本身就是有问题的?

服务提供者停掉后,服务信息在admin一直存在

问题是这样的,服务提供方启动后,在admin可以查询到该服务,但当提供方停掉服务后,在admin上依然能查到该服务,且一直存在,直到重启admin后,服务信息消失。
尝试了这么几种情况:
1、dubbo2.8.3,admin2.8.3,存在该问题。
2、dubbo2.8.3,admin2.5.3,存在该问题。
3、dubbo2.5.3,admin2.8.3,不存在该问题。
4、dubbo2.5.3,admin2.5.3,不存在该问题。
不知道dubbo2.8.3是否改动过相关的代码。

kryo 序列化bug

问题描述:我是在测试kryo对集合的支持情况下,遇到以下问题,参数类型是List,Map<Long,Building>,List,dubbox出现bug,使用dubbo序列化没有此类问题

  • 接口:List getBuildingByList(List buildings);

  • 代码调用:
    List list = new ArrayList();
    list.add(getBuilding());
    List result = restService.getBuildingByList(list);

  • 异常堆栈:
    Caused by: com.esotericsoftware.kryo.KryoException: Unable to find class: �test
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:156) ~[kryo-3.0.3.jar:na]
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:133) ~[kryo-3.0.3.jar:na]
    at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:670) ~[kryo-3.0.3.jar:na]
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:781) ~[kryo-3.0.3.jar:na]
    at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:125) ~[dubbo-2.8.4.jar:2.8.4]

  • 接口:Map<Long,Building> getBuildingMapByListIds(List ids)

  • 代码调用:
    List ids = new ArrayList<>();
    ids.add(1l);
    Map<Long,Building> result = restService.getBuildingMapByListIds(ids);

  • 客户端异常堆栈:
    com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getBuildingMapByListIds in the service boot.dubbo.api.RestService. Tried 3 times of the providers 10.6.244.205:20880 from the registry localhost:2181 on the consumer 10.6.244.205 using the dubbo version 2.8.4. Last error is: Failed to invoke remote method: getBuildingMapByListIds, provider: dubbo://10.6.244.205:20880/boot.dubbo.api.RestService?anyhost=true&application=demo-web&check=false&dubbo=2.8.4&generic=false&interface=boot.dubbo.api.RestService&logger=slf4j&methods=getBuildingMapByListIds,createBuilding,getUser,getBuildingsByMap,update,getBuildingsByListIds,getBuildingByList,getOne,deleteUser,create,getBuilding&owner=william&pid=1666&serialization=kryo&side=consumer&timestamp=1449743217114, cause: Fail to decode request due to: RpcInvocation [methodName=getBuildingMapByListIds, parameterTypes=[], arguments=null, attachments={path=boot.dubbo.api.RestService, input=176, dubbo=2.8.4, version=0.0.0}]

    at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:108)
    at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
    at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
    at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
    at com.alibaba.dubbo.common.bytecode.proxy1.getBuildingMapByListIds(proxy1.java)
    at boot.dubbo.simple.client.TestRestServieUsing.testGetBuildingMap(TestRestServieUsing.java:106)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
    Caused by: com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation [methodName=getBuildingMapByListIds, parameterTypes=[], arguments=null, attachments={path=boot.dubbo.api.RestService, input=176, dubbo=2.8.4, version=0.0.0}]
    at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:190)
    at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:110)
    at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:84)
    at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:96)
    at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:144)
    at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74)
    at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
    at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
    at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
    at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
    at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77)
    ... 37 more

  • 服务端异常:
    2015-12-10 19:07:05.653 WARN 1150 --- [w I/O worker #5] c.a.d.r.p.dubbo.DecodeableRpcInvocation : [DUBBO] Decode rpc invocation failed: java.lang.String cannot be cast to java.util.Map, dubbo version: 2.8.4, current host: 10.6.244.205

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:150) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:74) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:138) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134) [dubbo-2.8.4.jar:2.8.4]
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [netty-3.7.0.Final.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]

使用dubbox-admin打包编译后war启动报错

38 java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Wed Dec 30 21:41:29 CST 2015]; root of context hierar>
39 at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:344)
40 at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
41 at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:869)
42 at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
43 at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
44 at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
45 at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4980)
46 at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5626)
47 at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
48 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
49 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
50 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
51 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
52 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
53 at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
54 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
55 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
56 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
57 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
58 at java.lang.Thread.run(Thread.java:744)
59 2015-12-30 21:41:29,186 [localhost-startStop-1] WARN org.springframework.context.support.AbstractApplicationContext (AbstractApplicationContext.java:880) - Exception thrown from LifecycleProcessor on context close
dubbo-governance.log Line:16/395[4%]Col:1Buf:#1[9][0x9]
337 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
338 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
339 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
340 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
341 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
342 at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
343 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
344 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
345 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
346 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
347 at java.lang.Thread.run(Thread.java:744)
348 Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
349 at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141)
350 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)
351 ... 25 more
352 2015-12-30 22:01:06,227 [localhost-startStop-1] INFO org.springframework.context.support.AbstractApplicationContext (AbstractApplicationContext.java:862) - Closing Root WebApplicationContext: startup date [Wed Dec 30 22:01:06 CST 20>
353 2015-12-30 22:01:06,237 [localhost-startStop-1] WARN org.springframework.context.support.AbstractApplicationContext (AbstractApplicationContext.java:872) - Exception thrown from ApplicationListener handling ContextClosedEvent
354 java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Wed Dec 30 22:01:06 CST 2015]; root of context hierar>
355 at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:344)
356 at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
357 at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:869)
358 at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
359 at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
360 at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
361 at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4980)
362 at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5626)
363 at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
364 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
365 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
366 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
367 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
368 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
369 at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
370 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
371 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
372 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
373 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
374 at java.lang.Thread.run(Thread.java:744)
375 2015-12-30 22:01:06,239 [localhost-startStop-1] WARN org.springframework.context.support.AbstractApplicationContext (AbstractApplicationContext.java:880) - Exception thrown from LifecycleProcessor on context close
376 java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Wed Dec 30 22:01:06 CST 2015]; root of context hierarchy
377 at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:357)
378 at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:877)
379 at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
380 at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
381 at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
382 at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4980)
383 at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5626)
384 at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
385 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
386 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
387 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
388 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
389 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
390 at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
391 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
392 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
393 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
394 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
395 at java.lang.Thread.run(Thread.java:744)

dubbox是否在rest协议的基础上增加ip白名单功能

rest协议在跨语言的情况下,不能走注册中心,所以也不能使用dubbo的令牌验证功能,安全和OAuth在未来会加到dubbox中,那么目前有没有在开发中呢;是不是加个ip白名单的功能会更快

一直提示 Unsupported protocol rest in notified url ,定位了好久了,不知道是不是dubbox 2.8.4 的问题

8:06:52.575 ERROR com.alibaba.dubbo.registry.integration.RegistryDirectory - Unsupported protocol rest in notified url: rest://192.168.2.186:8181/com.qbao.bbs.resources.interfaces.FocusMapInterface?accepts=500&anyhost=true&application=bbs_api_provider&dubbo=2.8.4&extension=com.planetj.servlet.filter.compression.CompressingFilter, com.qbao.bbs.exception.ExceptionMapperSupport, com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter&generic=false&interface=com.qbao.bbs.resources.interfaces.FocusMapInterface&methods=update,findByID,delete,create,findList&pid=4853&server=tomcat&side=provider&threads=500&timestamp=1452144536206&validation=true from registry 192.168.2.236:2181 to consumer 192.168.2.186, supported protocol: [dubbo, http, injvm, mock, redis, registry, rmi, thrift]
java.lang.IllegalStateException: Unsupported protocol rest in notified url: rest://192.168.2.186:8181/com.qbao.bbs.resources.interfaces.FocusMapInterface?accepts=500&anyhost=true&application=bbs_api_provider&dubbo=2.8.4&extension=com.planetj.servlet.filter.compression.CompressingFilter, com.qbao.bbs.exception.ExceptionMapperSupport, com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter&generic=false&interface=com.qbao.bbs.resources.interfaces.FocusMapInterface&methods=update,findByID,delete,create,findList&pid=4853&server=tomcat&side=provider&threads=500&timestamp=1452144536206&validation=true from registry 192.168.2.236:2181 to consumer 192.168.2.186, supported protocol: [dubbo, http, injvm, mock, redis, registry, rmi, thrift]

dubbox在tomcat容器中使用,shutdown关闭的时候JVM无法结束

dubbox 8月份拉取的最新版本。JDK7下构建。
运行环境是 tomcat8+JDK8
程序使用JDK8开发,编译级别JDK7
问题对我们困扰非常大,还请高手们帮忙分析下,多谢啦!

在执行tomcat的shutdown后,日志中出现很多memoryleak的错误,JVM无法结束。 按照apache#95 的建议,加入了ApplicationListener执行ProtocolConfig.destroyAll()。 dubbo服务提供者端的tomcat可以正常关闭,但是dubbo 消费者端tomcat关闭后jvm进程仍然在。
经过观察,凡是JVM进程不能结束,tomcat日志有如下错误:
22-Oct-2015 19:38:39.178 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [wx-business] created a ThreadLocal with key of type [com.alibaba.dubbo.rpc.RpcContext$1](value [com.alibaba.dubbo.rpc.RpcContext$1@3fcbc3da]) and a value of type [com.alibaba.dubbo.rpc.RpcContext](value [com.alibaba.dubbo.rpc.RpcContext@1f4bdee]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
22-Oct-2015 19:38:39.196 INFO [localhost-startStop-1-SendThread(10.135.100.231:2181)] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [org.apache.zookeeper.server.ZooTrace]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org.apache.zookeeper.server.ZooTrace]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1335)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1321)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1203)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1164)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1128)

22-Oct-2015 19:38:39.200 INFO [localhost-startStop-1-SendThread(10.135.100.231:2181)] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [org.apache.logging.log4j.core.impl.ThrowableProxy]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org.apache.logging.log4j.core.impl.ThrowableProxy]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1335)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1321)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1203)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1164)
at org.apache.logging.log4j.core.impl.Log4jLogEvent.getThrownProxy(Log4jLogEvent.java:323)
at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:64)
at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:36)
at org.apache.logging.log4j.core.layout.PatternLayout.toSerializable(PatternLayout.java:196)
at org.apache.logging.log4j.core.layout.PatternLayout.toSerializable(PatternLayout.java:55)
at org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(AbstractStringLayout.java:71)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:108)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:412)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:727)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:716)
at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:318)
at org.apache.zookeeper.ClientCnxn$1.uncaughtException(ClientCnxn.java:414)
at java.lang.Thread.dispatchUncaughtException(Thread.java:1952)

22-Oct-2015 19:38:39.206 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-18080"]
2015-10-22 19:38:39,202 ERROR An exception occurred processing Appender Console java.lang.IllegalStateException: Can't overwrite cause with java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org.apache.logging.log4j.core.impl.ThrowableProxy]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at java.lang.Throwable.initCause(Throwable.java:457)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1324)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1203)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1164)
at org.apache.logging.log4j.core.impl.Log4jLogEvent.getThrownProxy(Log4jLogEvent.java:323)
at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:64)
at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:36)
at org.apache.logging.log4j.core.layout.PatternLayout.toSerializable(PatternLayout.java:196)
at org.apache.logging.log4j.core.layout.PatternLayout.toSerializable(PatternLayout.java:55)
at org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(AbstractStringLayout.java:71)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:108)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:412)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:727)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:716)
at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:318)
at org.apache.zookeeper.ClientCnxn$1.uncaughtException(ClientCnxn.java:414)
at java.lang.Thread.dispatchUncaughtException(Thread.java:1952)
Caused by: java.lang.ClassNotFoundException
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1323)
... 20 more

文档中的疑问

请问可否举个例子说明一下如何通过GET来做删操作,POST做改操作的话是否是通过提交的数据中增加特殊标记字段让服务端来处理。

REST服务中虽然建议使用HTTP协议中四种标准方法POST、DELETE、PUT、GET来分别实现常见的“增删改查”,但实际中,我们一般情况直接用POST来实现“增改”,GET来实现“删查”即可

xsd文件没有修改吗?

dubbo:protoco元素提示不允许属性:extension和optimizer

具体如下:

文件中的:
<dubbo:protocol name="dubbo" serialization="kryo" optimizer="com.alibaba.dubbo.demo.SerializationOptimizerImpl"/>
显示以下错误:
cvc-complex-type.3.2.2: Attribute 'optimizer' is not allowed to appear in element 'dubbo:protocol'.

<dubbo:protocol name="rest" port="8888" threads="500" contextpath="services" server="tomcat" accepts="500"
extension="com.alibaba.dubbo.demo.extension.TraceInterceptor,
com.alibaba.dubbo.demo.extension.TraceFilter,
com.alibaba.dubbo.demo.extension.ClientTraceFilter,
com.alibaba.dubbo.demo.extension.DynamicTraceBinding,
com.alibaba.dubbo.demo.extension.CustomExceptionMapper,
com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter"/>

显示以下错误:
cvc-complex-type.3.2.2: Attribute 'extension' is not allowed to appear in element 'dubbo:protocol'.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.