diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java index ae5a63ba2d..2905ea523f 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java @@ -28,9 +28,9 @@ import com.alibaba.dubbo.registry.RegistryService; import com.alibaba.dubbo.registry.support.UrlUtils; import com.alibaba.dubbo.rpc.Filter; import com.alibaba.dubbo.rpc.InvokerListener; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.cluster.Cluster; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; /** * AbstractDefaultConfig diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java index fbb11d2dce..d14604ad41 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java @@ -38,15 +38,15 @@ import com.alibaba.dubbo.common.utils.ReflectUtils; import com.alibaba.dubbo.common.utils.StringUtils; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.StaticContext; import com.alibaba.dubbo.rpc.cluster.Cluster; import com.alibaba.dubbo.rpc.cluster.directory.StaticDirectory; import com.alibaba.dubbo.rpc.cluster.support.AvailableCluster; import com.alibaba.dubbo.rpc.cluster.support.ClusterUtils; -import com.alibaba.dubbo.rpc.injvm.InjvmProtocol; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.rpc.protocol.injvm.InjvmProtocol; +import com.alibaba.dubbo.service.GenericService; /** * ReferenceConfig diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java index 08ed65c821..a4e00cd09e 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java @@ -39,10 +39,10 @@ import com.alibaba.dubbo.common.utils.StringUtils; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcStatus; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.service.GenericService; /** * ServiceConfig diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ReferenceBean.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ReferenceBean.java index 18ffdd6cf3..a7e3be1aa5 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ReferenceBean.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ReferenceBean.java @@ -31,7 +31,7 @@ import com.alibaba.dubbo.config.ProtocolConfig; import com.alibaba.dubbo.config.ReferenceConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.ServiceConfig; -import com.alibaba.dubbo.rpc.injvm.InjvmProtocol; +import com.alibaba.dubbo.rpc.protocol.injvm.InjvmProtocol; /** * ReferenceFactoryBean diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Client.java b/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Client.java index 1f557fc6ca..83f497c0da 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Client.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Client.java @@ -19,7 +19,7 @@ import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; +import com.alibaba.dubbo.rpc.ProxyFactory; public class Client { private static ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Server.java b/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Server.java index e42cdfbbac..7c032e281e 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Server.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/callback/explicit/test/Server.java @@ -20,8 +20,8 @@ import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.dubbo.DubboCodec; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; +import com.alibaba.dubbo.rpc.ProxyFactory; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec; public class Server { private static ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/config/test/ExceptionTest.java b/dubbo-config/src/test/java/com/alibaba/dubbo/config/test/ExceptionTest.java index 42cb94c3eb..c96f6d1cf9 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/config/test/ExceptionTest.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/config/test/ExceptionTest.java @@ -28,7 +28,7 @@ import com.alibaba.dubbo.config.ReferenceConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.ServiceConfig; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.util.MyException; import com.alibaba.dubbo.rpc.util.MyService; import com.alibaba.dubbo.rpc.util.MyServiceImpl; diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/demo/consumer/GenericConsumer.java b/dubbo-config/src/test/java/com/alibaba/dubbo/demo/consumer/GenericConsumer.java index 2b4fcc2a05..3b991638a0 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/demo/consumer/GenericConsumer.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/demo/consumer/GenericConsumer.java @@ -20,7 +20,7 @@ import java.util.Map; import org.springframework.context.support.ClassPathXmlApplicationContext; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.service.GenericService; public class GenericConsumer { diff --git a/dubbo-config/src/test/java/com/alibaba/dubbo/demo/provider/impl/DemoServiceGenericImpl.java b/dubbo-config/src/test/java/com/alibaba/dubbo/demo/provider/impl/DemoServiceGenericImpl.java index 92e9c66f73..5cf167accd 100644 --- a/dubbo-config/src/test/java/com/alibaba/dubbo/demo/provider/impl/DemoServiceGenericImpl.java +++ b/dubbo-config/src/test/java/com/alibaba/dubbo/demo/provider/impl/DemoServiceGenericImpl.java @@ -19,8 +19,8 @@ import java.util.HashMap; import java.util.Map; import com.alibaba.dubbo.rpc.RpcContext; -import com.alibaba.dubbo.rpc.service.GenericException; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.service.GenericException; +import com.alibaba.dubbo.service.GenericService; /** * DemoServiceGenericeImpl diff --git a/dubbo-monitor-default/pom.xml b/dubbo-monitor-default/pom.xml new file mode 100644 index 0000000000..e374f8923f --- /dev/null +++ b/dubbo-monitor-default/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-monitor-default + jar + Dubbo Default Monitor Module + The default monitor module of dubbo project + + + com.alibaba + dubbo-monitor + ${project.parent.version} + + + + \ No newline at end of file diff --git a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/DubboMonitor.java b/dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitor.java similarity index 97% rename from dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/DubboMonitor.java rename to dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitor.java index ed97a79ce3..d1b40c24cf 100644 --- a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/DubboMonitor.java +++ b/dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.monitor.support.dubbo; +package com.alibaba.dubbo.monitor.dubbo; import java.util.Map; import java.util.concurrent.ConcurrentMap; diff --git a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/DubboMonitorFactroy.java b/dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitorFactroy.java similarity index 92% rename from dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/DubboMonitorFactroy.java rename to dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitorFactroy.java index 5371774bd5..04bd38d136 100644 --- a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/DubboMonitorFactroy.java +++ b/dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitorFactroy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.monitor.support.dubbo; +package com.alibaba.dubbo.monitor.dubbo; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.Extension; @@ -23,7 +23,7 @@ import com.alibaba.dubbo.monitor.MonitorService; import com.alibaba.dubbo.monitor.support.AbstractMonitorFactroy; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; +import com.alibaba.dubbo.rpc.ProxyFactory; /** * DefaultMonitorFactroy diff --git a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/Statistics.java b/dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/Statistics.java similarity index 95% rename from dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/Statistics.java rename to dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/Statistics.java index 859172c553..2437a270e0 100644 --- a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/dubbo/Statistics.java +++ b/dubbo-monitor-default/src/main/java/com/alibaba/dubbo/monitor/dubbo/Statistics.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.monitor.support.dubbo; +package com.alibaba.dubbo.monitor.dubbo; import java.io.Serializable; diff --git a/dubbo-monitor-default/src/main/resources/META-INF/services/com.alibaba.dubbo.monitor.MonitorFactory b/dubbo-monitor-default/src/main/resources/META-INF/services/com.alibaba.dubbo.monitor.MonitorFactory new file mode 100644 index 0000000000..94cedc1fcd --- /dev/null +++ b/dubbo-monitor-default/src/main/resources/META-INF/services/com.alibaba.dubbo.monitor.MonitorFactory @@ -0,0 +1 @@ +com.alibaba.dubbo.monitor.dubbo.DubboMonitorFactroy \ No newline at end of file diff --git a/dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/support/dubbo/DubboMonitorTest.java b/dubbo-monitor-default/src/test/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitorTest.java similarity index 93% rename from dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/support/dubbo/DubboMonitorTest.java rename to dubbo-monitor-default/src/test/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitorTest.java index 5ac0fa647a..3ab38078c1 100644 --- a/dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/support/dubbo/DubboMonitorTest.java +++ b/dubbo-monitor-default/src/test/java/com/alibaba/dubbo/monitor/dubbo/DubboMonitorTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.monitor.filter.support.dubbo; +package com.alibaba.dubbo.monitor.dubbo; import junit.framework.Assert; @@ -21,7 +21,6 @@ import org.junit.Test; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.monitor.MonitorService; -import com.alibaba.dubbo.monitor.support.dubbo.DubboMonitor; import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Result; diff --git a/dubbo-monitor-jmx/pom.xml b/dubbo-monitor-jmx/pom.xml new file mode 100644 index 0000000000..7027e77d6e --- /dev/null +++ b/dubbo-monitor-jmx/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-monitor-jmx + jar + Dubbo JMX Monitor Module + The jmx monitor module of dubbo project + + + com.alibaba + dubbo-monitor + ${project.parent.version} + + + \ No newline at end of file diff --git a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/filter/MonitorFilter.java b/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/MonitorFilter.java similarity index 97% rename from dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/filter/MonitorFilter.java rename to dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/MonitorFilter.java index 98a0a427ba..3c894edaf3 100644 --- a/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/filter/MonitorFilter.java +++ b/dubbo-monitor/src/main/java/com/alibaba/dubbo/monitor/support/MonitorFilter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.monitor.filter; +package com.alibaba.dubbo.monitor.support; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; diff --git a/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.monitor.MonitorFactory b/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.monitor.MonitorFactory deleted file mode 100644 index d8223836e6..0000000000 --- a/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.monitor.MonitorFactory +++ /dev/null @@ -1 +0,0 @@ -com.alibaba.dubbo.monitor.support.dubbo.DubboMonitorFactroy \ No newline at end of file diff --git a/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Filter b/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Filter index 1d4b7d3515..de66615e39 100644 --- a/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Filter +++ b/dubbo-monitor/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Filter @@ -1 +1 @@ -com.alibaba.dubbo.monitor.filter.MonitorFilter \ No newline at end of file +com.alibaba.dubbo.monitor.support.MonitorFilter \ No newline at end of file diff --git a/dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/MonitorFilterTest.java b/dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/MonitorFilterTest.java index 2c62c6bc94..671297f3f9 100644 --- a/dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/MonitorFilterTest.java +++ b/dubbo-monitor/src/test/java/com/alibaba/dubbo/monitor/filter/MonitorFilterTest.java @@ -28,6 +28,7 @@ import com.alibaba.dubbo.common.utils.NetUtils; import com.alibaba.dubbo.monitor.Monitor; import com.alibaba.dubbo.monitor.MonitorFactory; import com.alibaba.dubbo.monitor.MonitorService; +import com.alibaba.dubbo.monitor.support.MonitorFilter; import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Result; diff --git a/dubbo-registry-default/pom.xml b/dubbo-registry-default/pom.xml new file mode 100644 index 0000000000..51eed676cb --- /dev/null +++ b/dubbo-registry-default/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-registry-default + jar + Dubbo Default Registry Module + The default registry module of dubbo project + + + com.alibaba + dubbo-registry + ${project.parent.version} + + + \ No newline at end of file diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/dubbo/DubboRegistry.java b/dubbo-registry-default/src/main/java/com/alibaba/dubbo/registry/dubbo/DubboRegistry.java similarity index 97% rename from dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/dubbo/DubboRegistry.java rename to dubbo-registry-default/src/main/java/com/alibaba/dubbo/registry/dubbo/DubboRegistry.java index ca9f17bd04..94f7cf4ef0 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/dubbo/DubboRegistry.java +++ b/dubbo-registry-default/src/main/java/com/alibaba/dubbo/registry/dubbo/DubboRegistry.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.support.dubbo; +package com.alibaba.dubbo.registry.dubbo; import java.util.HashMap; import java.util.HashSet; diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/dubbo/DubboRegistryFactory.java b/dubbo-registry-default/src/main/java/com/alibaba/dubbo/registry/dubbo/DubboRegistryFactory.java similarity index 94% rename from dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/dubbo/DubboRegistryFactory.java rename to dubbo-registry-default/src/main/java/com/alibaba/dubbo/registry/dubbo/DubboRegistryFactory.java index cef37435d8..e7aa22ade2 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/dubbo/DubboRegistryFactory.java +++ b/dubbo-registry-default/src/main/java/com/alibaba/dubbo/registry/dubbo/DubboRegistryFactory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.support.dubbo; +package com.alibaba.dubbo.registry.dubbo; import java.util.ArrayList; import java.util.Arrays; @@ -27,13 +27,13 @@ import com.alibaba.dubbo.common.bytecode.Wrapper; import com.alibaba.dubbo.common.utils.StringUtils; import com.alibaba.dubbo.registry.Registry; import com.alibaba.dubbo.registry.RegistryService; -import com.alibaba.dubbo.registry.directory.RegistryDirectory; import com.alibaba.dubbo.registry.support.AbstractRegistryFactory; +import com.alibaba.dubbo.registry.support.RegistryDirectory; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.cluster.Cluster; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; /** * DubboRegistryFactory diff --git a/dubbo-registry-default/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory b/dubbo-registry-default/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory new file mode 100644 index 0000000000..403c36f71c --- /dev/null +++ b/dubbo-registry-default/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory @@ -0,0 +1 @@ +com.alibaba.dubbo.registry.dubbo.DubboRegistryFactory \ No newline at end of file diff --git a/dubbo-registry-jndi/pom.xml b/dubbo-registry-jndi/pom.xml new file mode 100644 index 0000000000..c1409f53e6 --- /dev/null +++ b/dubbo-registry-jndi/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-registry-jndi + jar + Dubbo JNDI Registry Module + The jndi registry module of dubbo project + + + com.alibaba + dubbo-registry + ${project.parent.version} + + + \ No newline at end of file diff --git a/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java b/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java new file mode 100644 index 0000000000..a3e35a7b5c --- /dev/null +++ b/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistry.java @@ -0,0 +1,160 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.registry.multicast; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.MulticastSocket; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.common.utils.StringUtils; +import com.alibaba.dubbo.registry.NotifyListener; +import com.alibaba.dubbo.registry.support.AbstractRegistry; + +/** + * MulticastRegistry + * + * @author william.liangf + */ +public class MulticastRegistry extends AbstractRegistry { + + // 日志输出 + private static final Logger logger = LoggerFactory.getLogger(MulticastRegistry.class); + + private InetAddress mutilcastAddress; + + private MulticastSocket mutilcastSocket; + + public MulticastRegistry(URL url) { + super(url); + if (! isMulticastAddress(url.getHost())) { + throw new IllegalArgumentException("Invalid multicast address " + url.getHost() + ", scope: 224.0.0.0 - 239.255.255.255"); + } + try { + mutilcastAddress = InetAddress.getByName(url.getHost()); + mutilcastSocket = new MulticastSocket(url.getPort()); + mutilcastSocket.setLoopbackMode(false); + mutilcastSocket.joinGroup(mutilcastAddress); + Thread thread = new Thread(new Runnable() { + public void run() { + byte[] buf = new byte[1024]; + DatagramPacket recv = new DatagramPacket(buf, buf.length); + while (true) { + try { + mutilcastSocket.receive(recv); + MulticastRegistry.this.receive(new String(recv.getData()).trim(), (InetSocketAddress) recv.getSocketAddress()); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + } + }, "MulticastRegistry"); + thread.setDaemon(true); + thread.start(); + } catch (IOException e) { + throw new IllegalStateException(e.getMessage(), e); + } + } + + private static boolean isMulticastAddress(String ip) { + int i = ip.indexOf('.'); + if (i > 0) { + String prefix = ip.substring(0, i); + if (StringUtils.isInteger(prefix)) { + int p = Integer.parseInt(prefix); + return p >= 224 && p <= 239; + } + } + return false; + } + + private void receive(String msg, InetSocketAddress remoteAddress) { + if (msg.startsWith("register")) { + String[] parts = msg.split("\\s+"); + String service = parts[1]; + if (getSubscribed().containsKey(service)) { + URL url = URL.valueOf(parts[2]); + List urls = new ArrayList(); + List notified = getNotified().get(service); + if (notified != null) { + urls.addAll(notified); + } + if (! urls.contains(url)) { + urls.add(url); + } + notify(service, urls); + } + } else if (msg.startsWith("subscribe")) { + String[] parts = msg.split("\\s+"); + String service = parts[1]; + if (getRegistered().containsKey(service)) { + for (URL url : getRegistered().get(service)) { + send("register " + service + " " + url.toString()); + } + } + } + } + + private void send(String msg) { + DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), mutilcastAddress, mutilcastSocket.getLocalPort()); + try { + mutilcastSocket.send(hi); + } catch (IOException e) { + throw new IllegalStateException(e.getMessage(), e); + } + } + + public void register(String service, URL url) { + super.register(service, url); + send("register " + service + " " + url); + } + + public void unregister(String service, URL url) { + send("unregister " + service + " " + url); + } + + public void subscribe(String service, Map parameters, NotifyListener listener) { + super.subscribe(service, parameters, listener); + send("subscribe " + service + " " + StringUtils.toQueryString(parameters)); + synchronized (this) { + try { + this.wait(5000); + } catch (InterruptedException e) { + } + } + } + + public void unsubscribe(String service, Map query, NotifyListener listener) { + send("unsubscribe " + service + " " + StringUtils.toQueryString(query)); + } + + public boolean isAvailable() { + return mutilcastSocket.isConnected(); + } + + @Override + public void destroy() { + mutilcastSocket.close(); + } + +} \ No newline at end of file diff --git a/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistryFactory.java b/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistryFactory.java new file mode 100644 index 0000000000..6b9e588c45 --- /dev/null +++ b/dubbo-registry-multicast/src/main/java/com/alibaba/dubbo/registry/multicast/MulticastRegistryFactory.java @@ -0,0 +1,35 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.registry.multicast; + +import com.alibaba.dubbo.common.Extension; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.registry.Registry; +import com.alibaba.dubbo.registry.RegistryFactory; + +/** + * MulticastRegistryLocator + * + * @author william.liangf + */ +@Extension("multicast") +public class MulticastRegistryFactory implements RegistryFactory { + + public Registry getRegistry(URL url) { + return new MulticastRegistry(url); + } + +} \ No newline at end of file diff --git a/dubbo-registry-multicast/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory b/dubbo-registry-multicast/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory new file mode 100644 index 0000000000..e37727e195 --- /dev/null +++ b/dubbo-registry-multicast/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory @@ -0,0 +1 @@ +com.alibaba.dubbo.registry.multicast.MulticastRegistryFactory \ No newline at end of file diff --git a/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java b/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java new file mode 100644 index 0000000000..04ea98bdf3 --- /dev/null +++ b/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistry.java @@ -0,0 +1,167 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.registry.zookeeper; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.WatchedEvent; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.Watcher.Event.EventType; +import org.apache.zookeeper.ZooDefs.Ids; +import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.data.Stat; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.registry.NotifyListener; +import com.alibaba.dubbo.registry.Registry; +import com.alibaba.dubbo.rpc.RpcException; + +/** + * ZookeeperRegistry + * + * @author william.liangf + */ +public class ZookeeperRegistry implements Registry { + + private final static Logger logger = LoggerFactory.getLogger(ZookeeperRegistry.class); + + private final URL url; + + private final ZooKeeper zookeeper; + + public ZookeeperRegistry(URL url) { + this.url = url; + try { + this.zookeeper = new ZooKeeper(url.getAddress(), url.getPositiveIntParameter( + Constants.TIMEOUT_KEY, 5000), new Watcher() { + public void process(WatchedEvent event) { + } + }); + } catch (IOException e) { + throw new IllegalStateException(e.getMessage(), e); + } + } + + public URL getUrl() { + return url; + } + + public boolean isAvailable() { + return zookeeper.getState().isAlive(); + } + + public void destroy() { + try { + zookeeper.close(); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + } + + public void register(URL url) { + try { + String service = "/" + URL.encode(url.getServiceKey()); + if (zookeeper.exists(service, false) == null) { + zookeeper.create(service, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); + } + String provider = service + "/" + URL.encode(url.toIdentityString()); + if (zookeeper.exists(provider, false) == null) { + zookeeper.create(provider, url.toParameterString().getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); + } + } catch (Exception e) { + throw new RpcException(e.getMessage(), e); + } + } + + public void unregister(URL url) { + try { + String service = "/" + URL.encode(url.getServiceKey()); + String provider = service + "/" + URL.encode(url.toIdentityString()); + zookeeper.delete(provider, -1); + } catch (Exception e) { + throw new RpcException(e.getMessage(), e); + } + } + + public void subscribe(URL url, NotifyListener listener) { + try { + String service = "/" + URL.encode(url.getServiceKey()); + List providers = zookeeper.getChildren(service, new NotifyWatcher(url, listener)); + listener.notify(toUrls(service, providers)); + } catch (Exception e) { + throw new RpcException(e.getMessage(), e); + } + } + + public void unsubscribe(URL url, NotifyListener listener) { + } + + public List lookup(URL url) { + try { + String service = "/" + URL.encode(url.getServiceKey()); + List providers = zookeeper.getChildren(service, false); + return toUrls(service, providers); + } catch (Exception e) { + throw new RpcException(e.getMessage(), e); + } + } + + private List toUrls(String service, List providers) throws KeeperException, InterruptedException { + List urls = new ArrayList(); + for (String provider : providers) { + String path = service + provider; + String query = ""; + Stat stat = zookeeper.exists(path, false); + if (stat != null) { + byte[] data = zookeeper.getData(path, false, stat); + if (data != null && data.length > 0) { + query = "?" + new String(data); + } + } + urls.add(URL.valueOf(URL.decode(provider + query))); + } + return urls; + } + + private class NotifyWatcher implements Watcher { + + private final URL url; + + private final NotifyListener listener; + + public NotifyWatcher(URL url, NotifyListener listener) { + this.url = url; + this.listener = listener; + } + + public void process(WatchedEvent event) { + if (event.getType() == EventType.NodeChildrenChanged) { + listener.notify(lookup(url)); + } else if (event.getType() == EventType.NodeDataChanged) { + listener.notify(lookup(url)); + } + } + + } + +} diff --git a/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistryFactory.java b/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistryFactory.java new file mode 100644 index 0000000000..f85d44e14e --- /dev/null +++ b/dubbo-registry-zookeeper/src/main/java/com/alibaba/dubbo/registry/zookeeper/ZookeeperRegistryFactory.java @@ -0,0 +1,35 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.registry.zookeeper; + +import com.alibaba.dubbo.common.Extension; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.registry.Registry; +import com.alibaba.dubbo.registry.support.AbstractRegistryFactory; + +/** + * ZookeeperRegistryFactory. + * + * @author william.liangf + */ +@Extension("zookeeper") +public class ZookeeperRegistryFactory extends AbstractRegistryFactory { + + public Registry createRegistry(URL url) { + return new ZookeeperRegistry(url); + } + +} diff --git a/dubbo-registry-zookeeper/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory b/dubbo-registry-zookeeper/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory new file mode 100644 index 0000000000..b538326461 --- /dev/null +++ b/dubbo-registry-zookeeper/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory @@ -0,0 +1 @@ +com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistryFactory \ No newline at end of file diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/directory/RegistryDirectory.java b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java similarity index 97% rename from dubbo-registry/src/main/java/com/alibaba/dubbo/registry/directory/RegistryDirectory.java rename to dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java index a12422e7b6..f586a921dc 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/directory/RegistryDirectory.java +++ b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.directory; +package com.alibaba.dubbo.registry.support; import java.util.ArrayList; import java.util.Collection; diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/protocol/RegistryProtocol.java b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryProtocol.java similarity index 94% rename from dubbo-registry/src/main/java/com/alibaba/dubbo/registry/protocol/RegistryProtocol.java rename to dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryProtocol.java index 25e8e82114..2c1a6a7651 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/protocol/RegistryProtocol.java +++ b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryProtocol.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.protocol; +package com.alibaba.dubbo.registry.support; import java.util.ArrayList; import java.util.List; @@ -25,14 +25,13 @@ import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.registry.Registry; import com.alibaba.dubbo.registry.RegistryFactory; -import com.alibaba.dubbo.registry.directory.RegistryDirectory; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.cluster.Cluster; -import com.alibaba.dubbo.rpc.support.InvokerWrapper; +import com.alibaba.dubbo.rpc.protocol.InvokerWrapper; /** * RegistryProtocol diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/status/RegistryStatusChecker.java b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryStatusChecker.java similarity index 91% rename from dubbo-registry/src/main/java/com/alibaba/dubbo/registry/status/RegistryStatusChecker.java rename to dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryStatusChecker.java index 846edda01a..b3577b8db2 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/status/RegistryStatusChecker.java +++ b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryStatusChecker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.status; +package com.alibaba.dubbo.registry.support; import java.util.Collection; @@ -21,7 +21,6 @@ import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.status.Status; import com.alibaba.dubbo.common.status.StatusChecker; import com.alibaba.dubbo.registry.Registry; -import com.alibaba.dubbo.registry.support.AbstractRegistryFactory; /** * RegistryStatusChecker diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/SimpleRegistryExporter.java b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/SimpleRegistryExporter.java index cef3cfe53e..c5246db13c 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/SimpleRegistryExporter.java +++ b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/SimpleRegistryExporter.java @@ -25,8 +25,8 @@ import com.alibaba.dubbo.common.utils.NetUtils; import com.alibaba.dubbo.registry.RegistryService; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Protocol; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; /** * SimpleRegistryExporter diff --git a/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.common.status.StatusChecker b/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.common.status.StatusChecker index aa8a2a0988..58920c61f6 100644 --- a/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.common.status.StatusChecker +++ b/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.common.status.StatusChecker @@ -1 +1 @@ -com.alibaba.dubbo.registry.status.RegistryStatusChecker \ No newline at end of file +com.alibaba.dubbo.registry.support.RegistryStatusChecker \ No newline at end of file diff --git a/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory b/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory deleted file mode 100644 index f7cbccb8bb..0000000000 --- a/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.registry.RegistryFactory +++ /dev/null @@ -1 +0,0 @@ -com.alibaba.dubbo.registry.support.dubbo.DubboRegistryFactory \ No newline at end of file diff --git a/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Protocol b/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Protocol index bf0b13a669..c210ed749a 100644 --- a/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Protocol +++ b/dubbo-registry/src/main/resources/META-INF/services/com.alibaba.dubbo.rpc.Protocol @@ -1 +1 @@ -com.alibaba.dubbo.registry.protocol.RegistryProtocol \ No newline at end of file +com.alibaba.dubbo.registry.support.RegistryProtocol \ No newline at end of file diff --git a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/protocol/DemoService.java b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/DemoService.java similarity index 92% rename from dubbo-registry/src/test/java/com/alibaba/dubbo/registry/protocol/DemoService.java rename to dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/DemoService.java index 28f7433a9b..76021d4d9f 100644 --- a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/protocol/DemoService.java +++ b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/DemoService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.protocol; +package com.alibaba.dubbo.registry.support; /** * TestService diff --git a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/directory/RegistryDirectoryTest.java b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryDirectoryTest.java similarity index 99% rename from dubbo-registry/src/test/java/com/alibaba/dubbo/registry/directory/RegistryDirectoryTest.java rename to dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryDirectoryTest.java index 5a0b3bc14f..4d694b313b 100644 --- a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/directory/RegistryDirectoryTest.java +++ b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryDirectoryTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.directory; +package com.alibaba.dubbo.registry.support; import static org.junit.Assert.fail; @@ -29,6 +29,7 @@ import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.registry.RegistryFactory; +import com.alibaba.dubbo.registry.support.RegistryDirectory; import com.alibaba.dubbo.registry.support.SimpleRegistryExporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; diff --git a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/protocol/RegistryProtocolTest.java b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryProtocolTest.java similarity index 91% rename from dubbo-registry/src/test/java/com/alibaba/dubbo/registry/protocol/RegistryProtocolTest.java rename to dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryProtocolTest.java index e410aed56e..e8f8e2e778 100644 --- a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/protocol/RegistryProtocolTest.java +++ b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryProtocolTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.protocol; +package com.alibaba.dubbo.registry.support; import static org.junit.Assert.assertEquals; @@ -23,6 +23,7 @@ import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.registry.MockedClient; import com.alibaba.dubbo.registry.RegistryFactory; +import com.alibaba.dubbo.registry.support.RegistryProtocol; import com.alibaba.dubbo.registry.support.SimpleRegistryExporter; import com.alibaba.dubbo.remoting.exchange.ExchangeClient; import com.alibaba.dubbo.rpc.Exporter; @@ -30,8 +31,8 @@ import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.cluster.support.FailfastCluster; -import com.alibaba.dubbo.rpc.dubbo.DubboInvoker; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * RegistryProtocolTest diff --git a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/status/RegistryStatusCheckerTest.java b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryStatusCheckerTest.java similarity index 92% rename from dubbo-registry/src/test/java/com/alibaba/dubbo/registry/status/RegistryStatusCheckerTest.java rename to dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryStatusCheckerTest.java index 71eb9f74b5..4f2985fdcb 100644 --- a/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/status/RegistryStatusCheckerTest.java +++ b/dubbo-registry/src/test/java/com/alibaba/dubbo/registry/support/RegistryStatusCheckerTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.registry.status; +package com.alibaba.dubbo.registry.support; import static org.junit.Assert.assertEquals; @@ -25,6 +25,7 @@ import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.common.status.Status; import com.alibaba.dubbo.registry.RegistryFactory; import com.alibaba.dubbo.registry.support.AbstractRegistryFactory; +import com.alibaba.dubbo.registry.support.RegistryStatusChecker; import com.alibaba.dubbo.registry.support.SimpleRegistryExporter; /** diff --git a/dubbo-remoting-grizzly/pom.xml b/dubbo-remoting-grizzly/pom.xml index 7c199ba5d5..a254c2bb98 100644 --- a/dubbo-remoting-grizzly/pom.xml +++ b/dubbo-remoting-grizzly/pom.xml @@ -31,5 +31,11 @@ dubbo-remoting ${project.parent.version} + + org.glassfish.grizzly + grizzly-core + provided + true + \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyChannel.java b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyChannel.java new file mode 100644 index 0000000000..260a9597ca --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyChannel.java @@ -0,0 +1,178 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.remoting.transport.grizzly; + +import java.net.InetSocketAddress; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import org.glassfish.grizzly.Connection; +import org.glassfish.grizzly.Grizzly; +import org.glassfish.grizzly.GrizzlyFuture; +import org.glassfish.grizzly.attributes.Attribute; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.transport.support.AbstractChannel; + +/** + * GrizzlyChannel + * + * @author william.liangf + */ +final class GrizzlyChannel extends AbstractChannel { + + private static final Logger logger = LoggerFactory.getLogger(GrizzlyChannel.class); + + private static final String CHANNEL_KEY = GrizzlyChannel.class.getName() + ".CHANNEL"; + + private static final Attribute ATTRIBUTE = Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(CHANNEL_KEY); + + private final Connection connection; + + /** + * @param connection + * @param url + * @param handler + */ + private GrizzlyChannel(Connection connection, URL url, ChannelHandler handler){ + super(url, handler); + if (connection == null) { + throw new IllegalArgumentException("grizzly connection == null"); + } + this.connection = connection; + } + + static GrizzlyChannel getOrAddChannel(Connection connection, URL url, ChannelHandler handler) { + if (connection == null) { + return null; + } + GrizzlyChannel ret = ATTRIBUTE.get(connection); + if (ret == null) { + ret = new GrizzlyChannel(connection, url, handler); + if (connection.isOpen()) { + ATTRIBUTE.set(connection, ret); + } + } + return ret; + } + + static void removeChannelIfDisconnectd(Connection connection) { + if (connection != null && ! connection.isOpen()) { + ATTRIBUTE.remove(connection); + } + } + + public InetSocketAddress getRemoteAddress() { + return (InetSocketAddress) connection.getPeerAddress(); + } + + public boolean isConnected() { + return connection.isOpen(); + } + + public InetSocketAddress getLocalAddress() { + return (InetSocketAddress) connection.getLocalAddress(); + } + + @SuppressWarnings("rawtypes") + public void send(Object message, boolean sent) throws RemotingException { + super.send(message, sent); + + int timeout = 0; + try { + GrizzlyFuture future = connection.write(message); + if (sent) { + timeout = getUrl().getPositiveIntParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT); + future.get(timeout, TimeUnit.MILLISECONDS); + } + } + catch (TimeoutException e) { + throw new RemotingException(this, "Failed to send message " + message + " to " + getRemoteAddress() + + "in timeout(" + timeout + "ms) limit", e); + } + catch (Throwable e) { + throw new RemotingException(this, "Failed to send message " + message + " to " + getRemoteAddress() + ", cause: " + e.getMessage(), e); + } + } + + public void close() { + try { + super.close(); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + try { + removeChannelIfDisconnectd(connection); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + try { + if (logger.isInfoEnabled()) { + logger.info("Close grizzly channel " + connection); + } + connection.close(); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + } + + public boolean hasAttribute(String key) { + return getAttribute(key) == null; + } + + public Object getAttribute(String key) { + return Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(key).get(connection); + } + + public void setAttribute(String key, Object value) { + Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(key).set(connection, value); + } + + public void removeAttribute(String key) { + Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(key).remove(connection); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((connection == null) ? 0 : connection.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + GrizzlyChannel other = (GrizzlyChannel) obj; + if (connection == null) { + if (other.connection != null) return false; + } else if (!connection.equals(other.connection)) return false; + return true; + } + + @Override + public String toString() { + return "GrizzlyChannel [connection=" + connection + "]"; + } + +} \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyClient.java b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyClient.java new file mode 100644 index 0000000000..ebb65c6ff2 --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyClient.java @@ -0,0 +1,105 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.remoting.transport.grizzly; + +import java.util.concurrent.TimeUnit; + +import org.glassfish.grizzly.Connection; +import org.glassfish.grizzly.filterchain.FilterChainBuilder; +import org.glassfish.grizzly.filterchain.TransportFilter; +import org.glassfish.grizzly.nio.transport.TCPNIOTransport; +import org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder; +import org.glassfish.grizzly.strategies.SameThreadIOStrategy; +import org.glassfish.grizzly.threadpool.ThreadPoolConfig; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.remoting.Channel; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.transport.support.AbstractClient; + +/** + * GrizzlyClient + * + * @author william.liangf + */ +public class GrizzlyClient extends AbstractClient { + + private TCPNIOTransport transport; + + private volatile Connection connection; // volatile, please copy reference to use + + public GrizzlyClient(URL url, ChannelHandler handler) throws RemotingException { + super(url, handler); + } + + @Override + protected void doOpen() throws Throwable { + FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); + filterChainBuilder.add(new TransportFilter()); + filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this)); + filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); + TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); + ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); + config.setPoolName(CLIENT_THREAD_POOL_NAME) + .setQueueLimit(-1) + .setCorePoolSize(0) + .setMaxPoolSize(Integer.MAX_VALUE) + .setKeepAliveTime(60L, TimeUnit.SECONDS); + builder.setTcpNoDelay(true).setKeepAlive(true) + .setConnectionTimeout(getTimeout()) + .setIOStrategy(SameThreadIOStrategy.getInstance()); + transport = builder.build(); + transport.setProcessor(filterChainBuilder.build()); + transport.start(); + } + + + + @Override + protected void doConnect() throws Throwable { + connection = transport.connect(getConnectAddress()) + .get(getUrl().getPositiveIntParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS); + } + + @Override + protected void doDisConnect() throws Throwable { + try { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } catch (Throwable t) { + logger.warn(t.getMessage()); + } + } + + @Override + protected void doClose() throws Throwable { + try { + transport.stop(); + } catch (Throwable e) { + logger.warn(e.getMessage(), e); + } + } + + @Override + protected Channel getChannel() { + Connection c = connection; + if (c == null || ! c.isOpen()) + return null; + return GrizzlyChannel.getOrAddChannel(c, getUrl(), this); + } + +} \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java new file mode 100644 index 0000000000..8379352908 --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java @@ -0,0 +1,189 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.remoting.transport.grizzly; + +import java.io.IOException; + +import org.glassfish.grizzly.Buffer; +import org.glassfish.grizzly.Connection; +import org.glassfish.grizzly.filterchain.BaseFilter; +import org.glassfish.grizzly.filterchain.FilterChainContext; +import org.glassfish.grizzly.filterchain.NextAction; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.io.Bytes; +import com.alibaba.dubbo.common.io.UnsafeByteArrayInputStream; +import com.alibaba.dubbo.common.io.UnsafeByteArrayOutputStream; +import com.alibaba.dubbo.remoting.Channel; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.Codec; +import com.alibaba.dubbo.remoting.exchange.Response; + +/** + * GrizzlyCodecAdapter + * + * @author william.liangf + */ +public class GrizzlyCodecAdapter extends BaseFilter { + + private static final String BUFFER_KEY = GrizzlyCodecAdapter.class.getName() + ".BUFFER"; + + private final Codec upstreamCodec; + private final Codec downstreamCodec; + + private final URL url; + + private final ChannelHandler handler; + + private final int bufferSize; + + public GrizzlyCodecAdapter(Codec codec, URL url, ChannelHandler handler){ + this(codec, codec, url, handler); + } + /** + * server 端如果有消息发送需要分开codec,默认的上行code是dubbo1兼容的 + */ + public GrizzlyCodecAdapter(Codec upstreamCodec, Codec downstreamCodec, URL url, ChannelHandler handler){ + this.upstreamCodec = upstreamCodec; + this.downstreamCodec = downstreamCodec; + this.url = url; + this.handler = handler; + int b = url.getPositiveIntParameter(Constants.BUFFER_KEY, Constants.DEFAULT_BUFFER_SIZE); + this.bufferSize = b >= Constants.MIN_BUFFER_SIZE && b <= Constants.MAX_BUFFER_SIZE ? b : Constants.DEFAULT_BUFFER_SIZE; + } + + @Override + public NextAction handleWrite(FilterChainContext context) throws IOException { + Connection connection = context.getConnection(); + GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + UnsafeByteArrayOutputStream output = new UnsafeByteArrayOutputStream(1024); // 不需要关闭 + + if(!(context.getMessage() instanceof Response)){ + downstreamCodec.encode(channel, output, context.getMessage()); + }else{ + upstreamCodec.encode(channel, output, context.getMessage()); + } + + GrizzlyChannel.removeChannelIfDisconnectd(connection); + byte[] bytes = output.toByteArray(); + Buffer buffer = connection.getTransport().getMemoryManager().allocate(bytes.length); + buffer.put(bytes); + buffer.flip(); + buffer.allowBufferDispose(true); + context.setMessage(buffer); + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + return context.getInvokeAction(); + } + + @Override + public NextAction handleRead(FilterChainContext context) throws IOException { + Object message = context.getMessage(); + Connection connection = context.getConnection(); + Channel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + if (message instanceof Buffer) { // 收到新的数据包 + Buffer buffer = (Buffer) message; // 缓存 + int readable = buffer.capacity(); // 本次可读取新数据的大小 + if (readable == 0) { + return context.getStopAction(); + } + byte[] bytes; // byte[]缓存区,将Buffer转成byte[],再转成UnsafeByteArrayInputStream + int offset; // 指向已用数据的偏移量,off之前的数据都是已用过的 + int limit; // 有效长度,limit之后的长度是空白或无效数据,off到limit之间的数据是准备使用的有效数据 + Object[] remainder = (Object[]) channel.getAttribute(BUFFER_KEY); // 上次序列化剩下的数据 + channel.removeAttribute(BUFFER_KEY); + if (remainder == null) { // 如果没有,创建新的bytes缓存 + bytes = new byte[bufferSize]; + offset = 0; + limit = 0; + } else { // 如果有,使用剩下的bytes缓存 + bytes = (byte[]) remainder[0]; + offset = (Integer) remainder[1]; + limit = (Integer) remainder[2]; + } + return receive(context, channel, buffer, readable, bytes, offset, limit); + } else if (message instanceof Object[]) { // 同一Buffer多轮Filter,即:一个Buffer里有多个请求 + Object[] remainder = (Object[]) message; + Buffer buffer = (Buffer) remainder[0]; + int readable = (Integer) remainder[1]; + byte[] bytes = (byte[]) remainder[2]; + int offset = (Integer) remainder[3]; + int limit = (Integer) remainder[4]; + return receive(context, channel, buffer, readable, bytes, offset, limit); + } else { // 其它事件直接往下传 + return context.getInvokeAction(); + } + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + } + + /* + * 接收 + * + * @param context 上下文 + * @param channel 通道 + * @param buffer 缓存 + * @param readable 缓存可读 + * @param bytes 输入缓存 + * @param offset 指向已读数据的偏移量,off之前的数据都是已用过的 + * @param limit 有效长度,limit之后的长度是空白或无效数据,off到limit之间的数据是准备使用的数据 + * @return 后续动作 + * @throws IOException + */ + private NextAction receive(FilterChainContext context, Channel channel, Buffer buffer, int readable, byte[] bytes, int offset, int limit) throws IOException { + for(;;) { + int read = Math.min(readable, bytes.length - limit); // 取bytes缓存空闲区,和可读取新数据,的最小值,即:此次最多读写数据的大小 + buffer.get(bytes, limit, read); // 从可读取新数据中,读取数据,尽量填满bytes缓存空闲区 + limit += read; // 有效数据变长 + readable -= read; // 可读数据变少 + UnsafeByteArrayInputStream input = new UnsafeByteArrayInputStream(bytes, offset, limit - offset); // 将bytes缓存转成InputStream,不需要关闭 + Object msg = upstreamCodec.decode(channel, input); // 调用Codec接口,解码数据 + if (msg == Codec.NEED_MORE_INPUT) { // 如果Codec觉得数据不够,不足以解码成一个对象 + if (readable == 0) { // 如果没有更多可读数据 + channel.setAttribute(BUFFER_KEY, new Object[] { bytes, offset, limit }); // 放入通道属性中,等待下一个Buffer的到来 + return context.getStopAction(); + } else { // 扩充或挪出空闲区,并循环,直到可读数据都加载到bytes缓存 + if (offset == 0) { // 如果bytes缓存全部没有被使用,如果这时数据还不够 + bytes = Bytes.copyOf(bytes, bytes.length << 1); // 将bytes缓存扩大一倍 + } else { // 如果bytes缓存有一段数据已被使用 + int len = limit - offset; // 计算有效数据长度 + System.arraycopy(bytes, offset, bytes, 0, len); // 将数据向前移到,压缩到已使用的部分,这样limit后面就会多出一些空闲,可以放数据 + offset = 0; // 移到后,bytes缓存没有数据被使用 + limit = len; // 移到后,有效数据都在bytes缓存最前面 + } + } + } else { // 如果解析出一个结果 + int position = input.position(); // 记录InputStream用了多少 + if (position == offset) { // 如果InputStream没有被读过,就返回了数据,直接报错,否则InputStream永远读不完,会死递归 + throw new IOException("Decode without read data."); + } + offset = position; // 记录已读数据 + context.setMessage(msg); // 将消息改为解码后的对象,以便被后面的Filter使用。 + if (limit - offset > 0 || readable > 0) { // 如果有效数据没有被读完,或者Buffer区还有未读数据 + return context.getInvokeAction(new Object[] { buffer, readable, bytes, offset, limit }); // 正常执行完Filter,并重新发起一轮Filter,继续读 + } else { // 否则所有数据读完 + return context.getInvokeAction(); // 正常执行完Filter + } + } + } + } + +} \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyHandler.java b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyHandler.java new file mode 100644 index 0000000000..f7196cd305 --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyHandler.java @@ -0,0 +1,119 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.remoting.transport.grizzly; + +import java.io.IOException; + +import org.glassfish.grizzly.Connection; +import org.glassfish.grizzly.filterchain.BaseFilter; +import org.glassfish.grizzly.filterchain.FilterChainContext; +import org.glassfish.grizzly.filterchain.NextAction; + +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.common.utils.StringUtils; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; + +/** + * GrizzlyHandler + * + * @author william.liangf + */ +public class GrizzlyHandler extends BaseFilter { + + private static final Logger logger = LoggerFactory.getLogger(GrizzlyHandler.class); + + private final URL url; + + private final ChannelHandler handler; + + public GrizzlyHandler(URL url, ChannelHandler handler){ + this.url = url; + this.handler = handler; + } + + @Override + public NextAction handleConnect(FilterChainContext ctx) throws IOException { + Connection connection = ctx.getConnection(); + GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + handler.connected(channel); + } catch (RemotingException e) { + throw new IOException(StringUtils.toString(e)); + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + return ctx.getInvokeAction(); + } + + @Override + public NextAction handleClose(FilterChainContext ctx) throws IOException { + Connection connection = ctx.getConnection(); + GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + handler.disconnected(channel); + } catch (RemotingException e) { + throw new IOException(StringUtils.toString(e)); + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + return ctx.getInvokeAction(); + } + + @Override + public NextAction handleRead(FilterChainContext ctx) throws IOException { + Connection connection = ctx.getConnection(); + GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + handler.received(channel, ctx.getMessage()); + } catch (RemotingException e) { + throw new IOException(StringUtils.toString(e)); + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + return ctx.getInvokeAction(); + } + + @Override + public NextAction handleWrite(FilterChainContext ctx) throws IOException { + Connection connection = ctx.getConnection(); + GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + handler.sent(channel, ctx.getMessage()); + } catch (RemotingException e) { + throw new IOException(StringUtils.toString(e)); + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + return ctx.getInvokeAction(); + } + + @Override + public void exceptionOccurred(FilterChainContext ctx, Throwable error) { + Connection connection = ctx.getConnection(); + GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler); + try { + handler.caught(channel, error); + } catch (RemotingException e) { + logger.error("RemotingException on channel " + channel, e); + } finally { + GrizzlyChannel.removeChannelIfDisconnectd(connection); + } + } + +} \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyServer.java b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyServer.java new file mode 100644 index 0000000000..6a2cfc6559 --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyServer.java @@ -0,0 +1,118 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.remoting.transport.grizzly; + +import java.net.InetSocketAddress; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +import org.glassfish.grizzly.filterchain.FilterChainBuilder; +import org.glassfish.grizzly.filterchain.TransportFilter; +import org.glassfish.grizzly.nio.transport.TCPNIOTransport; +import org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder; +import org.glassfish.grizzly.strategies.SameThreadIOStrategy; +import org.glassfish.grizzly.threadpool.ThreadPoolConfig; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.utils.NetUtils; +import com.alibaba.dubbo.remoting.Channel; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.transport.support.AbstractServer; +import com.alibaba.dubbo.remoting.transport.support.handler.ChannelHandlers; + +/** + * GrizzlyServer + * + * @author william.liangf + */ +public class GrizzlyServer extends AbstractServer { + + private final Map channels = new ConcurrentHashMap(); // + + private TCPNIOTransport transport; + + public GrizzlyServer(URL url, ChannelHandler handler) throws RemotingException { + super(url, ChannelHandlers.wrap(handler, url)); + } + + @Override + protected void doOpen() throws Throwable { + FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); + filterChainBuilder.add(new TransportFilter()); + + filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getDownstreamCodec(), getUrl(), this)); + filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); + TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); + ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); + config.setPoolName(SERVER_THREAD_POOL_NAME).setQueueLimit(-1); + String threadpool = getUrl().getParameter(Constants.THREADPOOL_KEY, Constants.DEFAULT_THREADPOOL); + if (Constants.DEFAULT_THREADPOOL.equals(threadpool)) { + int threads = getUrl().getPositiveIntParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS); + config.setCorePoolSize(threads).setMaxPoolSize(threads) + .setKeepAliveTime(0L, TimeUnit.SECONDS); + } else if ("cached".equals(threadpool)) { + int threads = getUrl().getPositiveIntParameter(Constants.THREADS_KEY, Integer.MAX_VALUE); + config.setCorePoolSize(0).setMaxPoolSize(threads) + .setKeepAliveTime(60L, TimeUnit.SECONDS); + } else { + throw new IllegalArgumentException("Unsupported threadpool type " + threadpool); + } + builder.setKeepAlive(true).setReuseAddress(false) + .setIOStrategy(SameThreadIOStrategy.getInstance()); + transport = builder.build(); + transport.setProcessor(filterChainBuilder.build()); + transport.bind(getBindAddress()); + transport.start(); + } + + @Override + protected void doClose() throws Throwable { + try { + transport.stop(); + } catch (Throwable e) { + logger.warn(e.getMessage(), e); + } + } + + public boolean isBound() { + return ! transport.isStopped(); + } + + public Collection getChannels() { + return channels.values(); + } + + public Channel getChannel(InetSocketAddress remoteAddress) { + return channels.get(NetUtils.toAddressString(remoteAddress)); + } + + @Override + public void connected(Channel ch) throws RemotingException { + channels.put(NetUtils.toAddressString(ch.getRemoteAddress()), ch); + super.connected(ch); + } + + @Override + public void disconnected(Channel ch) throws RemotingException { + channels.remove(NetUtils.toAddressString(ch.getRemoteAddress())); + super.disconnected(ch); + } + +} \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyTransporter.java b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyTransporter.java new file mode 100644 index 0000000000..1a3e37f6bd --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/java/com/alibaba/dubbo/remoting/transport/grizzly/GrizzlyTransporter.java @@ -0,0 +1,44 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.remoting.transport.grizzly; + +import com.alibaba.dubbo.common.Extension; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.Client; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.Server; +import com.alibaba.dubbo.remoting.Transporter; + +/** + * GrizzlyTransporter + * + * @author william.liangf + */ +@Extension(GrizzlyTransporter.NAME) +public class GrizzlyTransporter implements Transporter { + + public static final String NAME = "grizzly"; + + public Server bind(URL url, ChannelHandler listener) throws RemotingException { + return new GrizzlyServer(url, listener); + } + + public Client connect(URL url, ChannelHandler listener) throws RemotingException { + return new GrizzlyClient(url, listener); + } + +} \ No newline at end of file diff --git a/dubbo-remoting-grizzly/src/main/resources/META-INF/services/com.alibaba.dubbo.remoting.Transporter b/dubbo-remoting-grizzly/src/main/resources/META-INF/services/com.alibaba.dubbo.remoting.Transporter new file mode 100644 index 0000000000..5ce7f6747b --- /dev/null +++ b/dubbo-remoting-grizzly/src/main/resources/META-INF/services/com.alibaba.dubbo.remoting.Transporter @@ -0,0 +1 @@ +com.alibaba.dubbo.remoting.transport.grizzly.GrizzlyTransporter \ No newline at end of file diff --git a/dubbo-remoting-mina/pom.xml b/dubbo-remoting-mina/pom.xml index ec58067c6e..be221a3c0b 100644 --- a/dubbo-remoting-mina/pom.xml +++ b/dubbo-remoting-mina/pom.xml @@ -31,5 +31,9 @@ dubbo-remoting ${project.parent.version} + + org.apache.mina + mina-core + \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaChannel.java b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaChannel.java new file mode 100644 index 0000000000..52cef5f148 --- /dev/null +++ b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaChannel.java @@ -0,0 +1,172 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.remoting.transport.mina; + +import java.net.InetSocketAddress; + +import org.apache.mina.common.IoSession; +import org.apache.mina.common.WriteFuture; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.transport.support.AbstractChannel; + +/** + * MinaChannel + * + * @author qian.lei + * @author william.liangf + */ +final class MinaChannel extends AbstractChannel { + + private static final Logger logger = LoggerFactory.getLogger(MinaChannel.class); + + private static final String CHANNEL_KEY = MinaChannel.class.getName() + ".CHANNEL"; + + private final IoSession session; + + private MinaChannel(IoSession session, URL url, ChannelHandler handler){ + super(url, handler); + if (session == null) { + throw new IllegalArgumentException("mina session == null"); + } + this.session = session; + } + + static MinaChannel getOrAddChannel(IoSession session, URL url, ChannelHandler handler) { + if (session == null) { + return null; + } + MinaChannel ret = (MinaChannel) session.getAttribute(CHANNEL_KEY); + if (ret == null) { + ret = new MinaChannel(session, url, handler); + if (session.isConnected()) { + MinaChannel old = (MinaChannel) session.setAttribute(CHANNEL_KEY, ret); + if (old != null) { + session.setAttribute(CHANNEL_KEY, old); + ret = old; + } + } + } + return ret; + } + + static void removeChannelIfDisconnectd(IoSession session) { + if (session != null && ! session.isConnected()) { + session.removeAttribute(CHANNEL_KEY); + } + } + + public InetSocketAddress getLocalAddress() { + return (InetSocketAddress) session.getLocalAddress(); + } + + public InetSocketAddress getRemoteAddress() { + return (InetSocketAddress) session.getRemoteAddress(); + } + + public boolean isConnected() { + return session.isConnected(); + } + + public void send(Object message, boolean sent) throws RemotingException { + super.send(message, sent); + + boolean success = true; + int timeout = 0; + try { + WriteFuture future = session.write(message); + if (sent) { + timeout = getUrl().getPositiveIntParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT); + success = future.join(timeout); + } + } catch (Throwable e) { + throw new RemotingException(this, "Failed to send message " + message + " to " + getRemoteAddress() + ", cause: " + e.getMessage(), e); + } + + if(!success) { + throw new RemotingException(this, "Failed to send message " + message + " to " + getRemoteAddress() + + "in timeout(" + timeout + "ms) limit"); + } + } + + public void close() { + try { + super.close(); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + try { + removeChannelIfDisconnectd(session); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + try { + if (logger.isInfoEnabled()) { + logger.info("CLose mina channel " + session); + } + session.close(); + } catch (Exception e) { + logger.warn(e.getMessage(), e); + } + } + + public boolean hasAttribute(String key) { + return session.containsAttribute(key); + } + + public Object getAttribute(String key) { + return session.getAttribute(key); + } + + public void setAttribute(String key, Object value) { + session.setAttribute(key, value); + } + + public void removeAttribute(String key) { + session.removeAttribute(key); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((session == null) ? 0 : session.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + MinaChannel other = (MinaChannel) obj; + if (session == null) { + if (other.session != null) return false; + } else if (!session.equals(other.session)) return false; + return true; + } + + @Override + public String toString() { + return "MinaChannel [session=" + session + "]"; + } + +} \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaClient.java b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaClient.java new file mode 100644 index 0000000000..612264fa49 --- /dev/null +++ b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaClient.java @@ -0,0 +1,177 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.remoting.transport.mina; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; + +import org.apache.mina.common.ConnectFuture; +import org.apache.mina.common.IoFuture; +import org.apache.mina.common.IoFutureListener; +import org.apache.mina.common.IoSession; +import org.apache.mina.common.ThreadModel; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.transport.socket.nio.SocketConnector; +import org.apache.mina.transport.socket.nio.SocketConnectorConfig; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.Version; +import com.alibaba.dubbo.common.utils.NamedThreadFactory; +import com.alibaba.dubbo.common.utils.NetUtils; +import com.alibaba.dubbo.remoting.Channel; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.transport.support.AbstractClient; +import com.alibaba.dubbo.remoting.transport.support.handler.ChannelHandlers; + +/** + * Mina client. + * + * @author qian.lei + * @author william.liangf + */ +public class MinaClient extends AbstractClient { + + private static final Map connectors = new ConcurrentHashMap(); + + private String connectorKey; + + private SocketConnector connector; + + private volatile IoSession session; // volatile, please copy reference to use + + public MinaClient(final URL url, final ChannelHandler handler) throws RemotingException { + super(url, wrapChannelHandler(url, handler)); + } + + protected static ChannelHandler wrapChannelHandler(URL url, ChannelHandler handler){ + url = url.addParameter(Constants.THREAD_NAME_KEY, CLIENT_THREAD_POOL_NAME) + .addParameter(Constants.THREADPOOL_KEY, Constants.DEFAULT_CLIENT_THREADPOOL); + return ChannelHandlers.wrap(handler, url); + } + + @Override + protected void doOpen() throws Throwable { + connectorKey = getUrl().toFullString(); + SocketConnector c = connectors.get(connectorKey); + if (c != null) { + connector = c; + } else { + // set thread pool. + connector = new SocketConnector(Constants.DEFAULT_IO_THREADS, + Executors.newCachedThreadPool(new NamedThreadFactory("MinaClientWorker", true))); + // config + SocketConnectorConfig cfg = (SocketConnectorConfig) connector.getDefaultConfig(); + cfg.setThreadModel(ThreadModel.MANUAL); + cfg.getSessionConfig().setTcpNoDelay(true); + cfg.getSessionConfig().setKeepAlive(true); + int timeout = getTimeout(); + cfg.setConnectTimeout(timeout < 1000 ? 1 : timeout / 1000); + // set codec. + connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MinaCodecAdapter(getCodec(), getUrl(), this))); + connectors.put(connectorKey, connector); + } + } + + @Override + protected void doConnect() throws Throwable { + ConnectFuture future = connector.connect(getConnectAddress(), new MinaHandler(getUrl(), this)); + long start = System.currentTimeMillis(); + final AtomicReference exception = new AtomicReference(); + final CountDownLatch finish = new CountDownLatch(1); // resolve future.awaitUninterruptibly() dead lock + future.addListener(new IoFutureListener() { + public void operationComplete(IoFuture future) { + try { + if (future.isReady()) { + IoSession newSession = future.getSession(); + try { + // 关闭旧的连接 + IoSession oldSession = MinaClient.this.session; // copy reference + if (oldSession != null) { + try { + if (logger.isInfoEnabled()) { + logger.info("Close old mina channel " + oldSession + " on create new mina channel " + newSession); + } + oldSession.close(); + } finally { + MinaChannel.removeChannelIfDisconnectd(oldSession); + } + } + } finally { + if (MinaClient.this.isClosed()) { + try { + if (logger.isInfoEnabled()) { + logger.info("Close new mina channel " + newSession + ", because the client closed."); + } + newSession.close(); + } finally { + MinaClient.this.session = null; + MinaChannel.removeChannelIfDisconnectd(newSession); + } + } else { + MinaClient.this.session = newSession; + } + } + } + } catch (Exception e) { + exception.set(e); + } finally { + finish.countDown(); + } + } + }); + try { + finish.await(getTimeout(), TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + throw new RemotingException(this, "Failed to connect to server " + getRemoteAddress() + " client-side timeout " + + getTimeout() + "ms (elapsed: " + (System.currentTimeMillis() - start) + + "ms) from netty client " + NetUtils.getLocalHost() + " using dubbo version " + + Version.getVersion() + ", cause: " + e.getMessage(), e); + } + Throwable e = exception.get(); + if (e != null) { + throw e; + } + } + + @Override + protected void doDisConnect() throws Throwable { + try { + MinaChannel.removeChannelIfDisconnectd(session); + } catch (Throwable t) { + logger.warn(t.getMessage()); + } + } + + @Override + protected void doClose() throws Throwable { + //release mina resouces. + } + + @Override + protected Channel getChannel() { + IoSession s = session; + if (s == null || ! s.isConnected()) + return null; + return MinaChannel.getOrAddChannel(s, getUrl(), this); + } + +} \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaCodecAdapter.java b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaCodecAdapter.java new file mode 100644 index 0000000000..632acbb2ad --- /dev/null +++ b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaCodecAdapter.java @@ -0,0 +1,193 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.remoting.transport.mina; + +import java.io.IOException; + +import org.apache.mina.common.ByteBuffer; +import org.apache.mina.common.IoSession; +import org.apache.mina.filter.codec.ProtocolCodecFactory; +import org.apache.mina.filter.codec.ProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolDecoderOutput; +import org.apache.mina.filter.codec.ProtocolEncoder; +import org.apache.mina.filter.codec.ProtocolEncoderOutput; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.io.Bytes; +import com.alibaba.dubbo.common.io.UnsafeByteArrayInputStream; +import com.alibaba.dubbo.common.io.UnsafeByteArrayOutputStream; +import com.alibaba.dubbo.remoting.Channel; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.Codec; +import com.alibaba.dubbo.remoting.exchange.Response; + +/** + * MinaCodecAdapter. + * + * @author qian.lei + */ +final class MinaCodecAdapter implements ProtocolCodecFactory { + + private static final String BUFFER_KEY = MinaCodecAdapter.class.getName() + ".BUFFER"; + + private final ProtocolEncoder encoder = new InternalEncoder(); + + private final ProtocolDecoder decoder = new InternalDecoder(); + + private final Codec upstreamCodec; + private final Codec downstreamCodec; + + private final URL url; + + private final ChannelHandler handler; + + private final int bufferSize; + + public MinaCodecAdapter(Codec codec, URL url, ChannelHandler handler){ + this(codec,codec,url,handler); + } + + /** + * server 端如果有消息发送需要分开codec,默认的上行code是dubbo1兼容的 + */ + public MinaCodecAdapter(Codec upstreamCodec, Codec downstreamCodec, URL url, ChannelHandler handler){ + this.upstreamCodec = upstreamCodec; + this.downstreamCodec = downstreamCodec; + this.url = url; + this.handler = handler; + int b = url.getPositiveIntParameter(Constants.BUFFER_KEY, Constants.DEFAULT_BUFFER_SIZE); + this.bufferSize = b >= Constants.MIN_BUFFER_SIZE && b <= Constants.MAX_BUFFER_SIZE ? b : Constants.DEFAULT_BUFFER_SIZE; + } + + public ProtocolEncoder getEncoder() { + return encoder; + } + + public ProtocolDecoder getDecoder() { + return decoder; + } + + private class InternalEncoder implements ProtocolEncoder { + + public void dispose(IoSession session) throws Exception { + } + + public void encode(IoSession session, Object msg, ProtocolEncoderOutput out) throws Exception { + UnsafeByteArrayOutputStream os = new UnsafeByteArrayOutputStream(1024); // 不需要关闭 + MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler); + try { + if(!(msg instanceof Response)){ + downstreamCodec.encode(channel, os, msg); + }else{ + upstreamCodec.encode(channel, os, msg); + } + + } finally { + MinaChannel.removeChannelIfDisconnectd(session); + } + out.write(ByteBuffer.wrap(os.toByteArray())); + out.flush(); + } + } + + private class InternalDecoder implements ProtocolDecoder { + + public void decode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out) throws Exception { + int readable = in.limit(); + if (readable <= 0) return; + + int off, limit; + byte[] buf; + // load buffer from context. + Object[] tmp = (Object[]) session.getAttribute(BUFFER_KEY); + if (tmp == null) { + buf = new byte[bufferSize]; + off = limit = 0; + } else { + buf = (byte[]) tmp[0]; + off = (Integer) tmp[1]; + limit = (Integer) tmp[2]; + } + + Channel channel = MinaChannel.getOrAddChannel(session, url, handler); + boolean remaining = true; + Object msg; + UnsafeByteArrayInputStream bis; + try { + do { + // read data into buffer. + int read = Math.min(readable, buf.length - limit); + in.get(buf, limit, read); + limit += read; + readable -= read; + bis = new UnsafeByteArrayInputStream(buf, off, limit - off); // 不需要关闭 + // decode object. + do { + try { + msg = upstreamCodec.decode(channel, bis); + } catch (IOException e) { + remaining = false; + throw e; + } + if (msg == Codec.NEED_MORE_INPUT) { + if (off == 0) { + if (readable > 0) { + buf = Bytes.copyOf(buf, buf.length << 1); + } + } else { + int len = limit - off; + System.arraycopy(buf, off, buf, 0, len); + off = 0; + limit = len; + } + break; + } else { + int pos = bis.position(); + if (pos == off) { + remaining = false; + throw new IOException("Decode without read data."); + } + if (msg != null) { + out.write(msg); + } + off = pos; + } + } while (bis.available() > 0); + } while (readable > 0); + } finally { + if (remaining) { + int len = limit - off; + if (len < buf.length / 2) { + System.arraycopy(buf, off, buf, 0, len); + off = 0; + limit = len; + } + session.setAttribute(BUFFER_KEY, new Object[] { buf, off, limit }); + } else { + session.removeAttribute(BUFFER_KEY); + } + MinaChannel.removeChannelIfDisconnectd(session); + } + } + + public void dispose(IoSession session) throws Exception { + } + + public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception { + } + } +} \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaHandler.java b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaHandler.java new file mode 100644 index 0000000000..a2074953fc --- /dev/null +++ b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaHandler.java @@ -0,0 +1,96 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.remoting.transport.mina; + +import org.apache.mina.common.IoHandlerAdapter; +import org.apache.mina.common.IoSession; + +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.remoting.ChannelHandler; + +/** + * MinaHandler + * + * @author william.liangf + */ +public class MinaHandler extends IoHandlerAdapter { + + private final URL url; + + private final ChannelHandler handler; + + public MinaHandler(URL url, ChannelHandler handler) { + if (url == null) { + throw new IllegalArgumentException("url == null"); + } + if (handler == null) { + throw new IllegalArgumentException("handler == null"); + } + this.url = url; + this.handler = handler; + } + + @Override + public void sessionOpened(IoSession session) throws Exception { + MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler); + try { + handler.connected(channel); + } finally { + MinaChannel.removeChannelIfDisconnectd(session); + } + } + + @Override + public void sessionClosed(IoSession session) throws Exception { + MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler); + try { + handler.disconnected(channel); + } finally { + MinaChannel.removeChannelIfDisconnectd(session); + } + } + + @Override + public void messageReceived(IoSession session, Object message) throws Exception { + MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler); + try { + handler.received(channel, message); + } finally { + MinaChannel.removeChannelIfDisconnectd(session); + } + } + + @Override + public void messageSent(IoSession session, Object message) throws Exception { + MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler); + try { + handler.sent(channel, message); + } finally { + MinaChannel.removeChannelIfDisconnectd(session); + } + } + + @Override + public void exceptionCaught(IoSession session, Throwable cause) throws Exception { + MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler); + try { + handler.caught(channel, cause); + } finally { + MinaChannel.removeChannelIfDisconnectd(session); + } + } + +} \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaServer.java b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaServer.java new file mode 100644 index 0000000000..8794435323 --- /dev/null +++ b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaServer.java @@ -0,0 +1,105 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.remoting.transport.mina; + +import java.net.InetSocketAddress; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.Executors; + +import org.apache.mina.common.IoSession; +import org.apache.mina.common.ThreadModel; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.transport.socket.nio.SocketAcceptor; +import org.apache.mina.transport.socket.nio.SocketAcceptorConfig; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.utils.NamedThreadFactory; +import com.alibaba.dubbo.remoting.Channel; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.transport.support.AbstractServer; +import com.alibaba.dubbo.remoting.transport.support.handler.ChannelHandlers; + +/** + * MinaServer + * + * @author qian.lei + * @author william.liangf + * @author ding.lid + */ +public class MinaServer extends AbstractServer { + + private SocketAcceptor acceptor; + + public MinaServer(URL url, ChannelHandler handler) throws RemotingException{ + super(url, ChannelHandlers.wrap(handler, url.addParameter(Constants.THREAD_NAME_KEY, SERVER_THREAD_POOL_NAME))); + } + + @Override + protected void doOpen() throws Throwable { + // set thread pool. + acceptor = new SocketAcceptor(getUrl().getPositiveIntParameter(Constants.IO_THREADS_KEY, Constants.DEFAULT_IO_THREADS), + Executors.newCachedThreadPool(new NamedThreadFactory("MinaServerWorker", + true))); + // config + SocketAcceptorConfig cfg = (SocketAcceptorConfig) acceptor.getDefaultConfig(); + cfg.setThreadModel(ThreadModel.MANUAL); + // set codec. + acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MinaCodecAdapter(getCodec(), getDownstreamCodec(), getUrl(), this))); + + acceptor.bind(getBindAddress(), new MinaHandler(getUrl(), this)); + } + + @Override + protected void doClose() throws Throwable { + try { + if (acceptor != null) { + acceptor.unbind(getBindAddress()); + } + } catch (Throwable e) { + logger.warn(e.getMessage(), e); + } + } + + public Collection getChannels() { + Set sessions = acceptor.getManagedSessions(getBindAddress()); + Collection channels = new HashSet(); + for (IoSession session : sessions) { + if (session.isConnected()) { + channels.add(MinaChannel.getOrAddChannel(session, getUrl(), this)); + } + } + return channels; + } + + public Channel getChannel(InetSocketAddress remoteAddress) { + Set sessions = acceptor.getManagedSessions(getBindAddress()); + for (IoSession session : sessions) { + if (session.getRemoteAddress().equals(remoteAddress)) { + return MinaChannel.getOrAddChannel(session, getUrl(), this); + } + } + return null; + } + + public boolean isBound() { + return acceptor.isManaged(getBindAddress()); + } + +} \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaTransporter.java b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaTransporter.java new file mode 100644 index 0000000000..71a5b5894f --- /dev/null +++ b/dubbo-remoting-mina/src/main/java/com/alibaba/remoting/transport/mina/MinaTransporter.java @@ -0,0 +1,42 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.remoting.transport.mina; + +import com.alibaba.dubbo.common.Extension; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.remoting.ChannelHandler; +import com.alibaba.dubbo.remoting.Client; +import com.alibaba.dubbo.remoting.RemotingException; +import com.alibaba.dubbo.remoting.Server; +import com.alibaba.dubbo.remoting.Transporter; + +/** + * @author ding.lid + */ +@Extension(MinaTransporter.NAME) +public class MinaTransporter implements Transporter { + + public static final String NAME = "mina"; + + public Server bind(URL url, ChannelHandler handler) throws RemotingException { + return new MinaServer(url, handler); + } + + public Client connect(URL url, ChannelHandler handler) throws RemotingException { + return new MinaClient(url, handler); + } + +} \ No newline at end of file diff --git a/dubbo-remoting-mina/src/main/resources/META-INF/services/com.alibaba.dubbo.remoting.Transporter b/dubbo-remoting-mina/src/main/resources/META-INF/services/com.alibaba.dubbo.remoting.Transporter new file mode 100644 index 0000000000..0e74d61a10 --- /dev/null +++ b/dubbo-remoting-mina/src/main/resources/META-INF/services/com.alibaba.dubbo.remoting.Transporter @@ -0,0 +1 @@ +com.alibaba.dubbo.remoting.transport.support.grizzly.GrizzlyTransporter \ No newline at end of file diff --git a/dubbo-remoting-netty/pom.xml b/dubbo-remoting-netty/pom.xml new file mode 100644 index 0000000000..76e5e33676 --- /dev/null +++ b/dubbo-remoting-netty/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-remoting-netty + jar + Dubbo Netty Remoting Module + The netty remoting module of dubbo project + + + com.alibaba + dubbo-remoting + ${project.parent.version} + + + org.jboss.netty + netty + + + \ No newline at end of file diff --git a/dubbo-rpc-default/pom.xml b/dubbo-rpc-default/pom.xml new file mode 100644 index 0000000000..eb876fab57 --- /dev/null +++ b/dubbo-rpc-default/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-rpc-default + jar + Dubbo Default RPC Module + The default rpc module of dubbo project + + + com.alibaba + dubbo-rpc + ${project.parent.version} + + + \ No newline at end of file diff --git a/dubbo-rpc-injvm/pom.xml b/dubbo-rpc-injvm/pom.xml new file mode 100644 index 0000000000..c96cbbf3c5 --- /dev/null +++ b/dubbo-rpc-injvm/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-rpc-injvm + jar + Dubbo InJVM RPC Module + The injvm rpc module of dubbo project + + + com.alibaba + dubbo-rpc + ${project.parent.version} + + + \ No newline at end of file diff --git a/dubbo-rpc-xfire/pom.xml b/dubbo-rpc-xfire/pom.xml new file mode 100644 index 0000000000..0d26e55a57 --- /dev/null +++ b/dubbo-rpc-xfire/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.alibaba + dubbo-parent + 2.0.8-SNAPSHOT + + dubbo-rpc-xfire + jar + Dubbo Xfire RPC Module + The xfire rpc module of dubbo project + + + com.alibaba + dubbo-rpc + ${project.parent.version} + + + \ No newline at end of file diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Exporter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Exporter.java index 52f759fd70..1494390a42 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Exporter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Exporter.java @@ -20,7 +20,7 @@ package com.alibaba.dubbo.rpc; * * @see com.alibaba.dubbo.rpc.Protocol#export(Invoker) * @see com.alibaba.dubbo.rpc.ExporterListener - * @see com.alibaba.dubbo.rpc.support.AbstractExporter + * @see com.alibaba.dubbo.rpc.protocol.AbstractExporter * @author william.liangf */ public interface Exporter { diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Invoker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Invoker.java index d76ebc7397..f55b22370d 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Invoker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/Invoker.java @@ -22,7 +22,7 @@ import com.alibaba.dubbo.common.URL; * * @see com.alibaba.dubbo.rpc.Protocol#refer(Class, URL) * @see com.alibaba.dubbo.rpc.InvokerListener - * @see com.alibaba.dubbo.rpc.support.AbstractInvoker + * @see com.alibaba.dubbo.rpc.protocol.AbstractInvoker * @author william.liangf */ public interface Invoker { diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/ProxyFactory.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/ProxyFactory.java similarity index 92% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/ProxyFactory.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/ProxyFactory.java index c5f7dd3da8..6c38f29a9e 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/ProxyFactory.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/ProxyFactory.java @@ -13,14 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy; +package com.alibaba.dubbo.rpc; import com.alibaba.dubbo.common.Adaptive; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.URL; -import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.RpcException; /** * ProxyFactory. (SPI, Singleton, ThreadSafe) diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java index 887072c752..1b73218db9 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java @@ -27,7 +27,7 @@ import com.alibaba.dubbo.common.utils.NetUtils; * Thread local context. (API, ThreadLocal, ThreadSafe) * * @see com.alibaba.dubbo.rpc.filter.ContextFilter - * @see com.alibaba.dubbo.rpc.support.AbstractExporter#invoke(Invocation, InetSocketAddress) + * @see com.alibaba.dubbo.rpc.protocol.AbstractExporter#invoke(Invocation, InetSocketAddress) * @author qian.lei * @author william.liangf */ diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/EventFilter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/EventFilter.java index 8ce4f581d8..9051cee0f7 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/EventFilter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/EventFilter.java @@ -33,7 +33,7 @@ import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcContext; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.StaticContext; -import com.alibaba.dubbo.rpc.support.FutureAdapter; +import com.alibaba.dubbo.rpc.protocol.FutureAdapter; /** * EventFilter diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java index 3a58d33ddd..db172a1463 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/ExceptionFilter.java @@ -28,7 +28,7 @@ import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcResult; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.service.GenericService; /** * ExceptionInvokerFilter diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/GenericFilter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/GenericFilter.java index ba71fffb7f..88160e9564 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/GenericFilter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/filter/GenericFilter.java @@ -28,7 +28,7 @@ import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcInvocation; import com.alibaba.dubbo.rpc.RpcResult; -import com.alibaba.dubbo.rpc.service.GenericException; +import com.alibaba.dubbo.service.GenericException; /** * GenericInvokerFilter. diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractExporter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractExporter.java similarity index 98% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractExporter.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractExporter.java index 254dc7abaf..affd5030d7 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractExporter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractExporter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import java.net.InetSocketAddress; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractInvoker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractInvoker.java similarity index 98% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractInvoker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractInvoker.java index 8f06e44638..0ac5b626ab 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractInvoker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractInvoker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import java.lang.reflect.InvocationTargetException; import java.util.Collections; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractProtocol.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractProtocol.java similarity index 98% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractProtocol.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractProtocol.java index 5e80c879a6..2c482251e7 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/AbstractProtocol.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/AbstractProtocol.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import java.util.ArrayList; import java.util.Map; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/FutureAdapter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/FutureAdapter.java similarity index 95% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/FutureAdapter.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/FutureAdapter.java index 44d7f1d4af..0ef5937411 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/FutureAdapter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/FutureAdapter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/InvokerWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/InvokerWrapper.java similarity index 93% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/InvokerWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/InvokerWrapper.java index 3a0511c3c9..4f54dc66c6 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/InvokerWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/InvokerWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Invocation; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/ProtocolFilterWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/ProtocolFilterWrapper.java similarity index 96% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/ProtocolFilterWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/ProtocolFilterWrapper.java index 7b3438f437..de915dcd77 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/ProtocolFilterWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/ProtocolFilterWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import java.util.ArrayList; import java.util.List; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/ProtocolListenerWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/ProtocolListenerWrapper.java similarity index 96% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/ProtocolListenerWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/ProtocolListenerWrapper.java index c683e4c426..369af610b9 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/support/ProtocolListenerWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/ProtocolListenerWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.support; +package com.alibaba.dubbo.rpc.protocol; import java.util.ArrayList; import java.util.Collections; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/CallbackServiceCodec.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java similarity index 99% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/CallbackServiceCodec.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java index ff23dda0e0..212ab09cd9 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/CallbackServiceCodec.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; import java.io.IOException; import java.util.HashMap; @@ -32,9 +32,9 @@ import com.alibaba.dubbo.remoting.Channel; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Invoker; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcInvocation; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; /** * callback 服务帮助类. diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/ChannelWrappedInvoker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java similarity index 98% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/ChannelWrappedInvoker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java index a5d6f4329a..4b484be74e 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/ChannelWrappedInvoker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; import java.net.InetSocketAddress; @@ -31,7 +31,7 @@ import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.RpcInvocation; -import com.alibaba.dubbo.rpc.support.AbstractInvoker; +import com.alibaba.dubbo.rpc.protocol.AbstractInvoker; /** * 基于已有channel的invoker. diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboCodec.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java similarity index 96% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboCodec.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java index d5b76fc6dd..913bb6dcc0 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboCodec.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; -import static com.alibaba.dubbo.rpc.dubbo.CallbackServiceCodec.decodeInvocationArgument; -import static com.alibaba.dubbo.rpc.dubbo.CallbackServiceCodec.encodeInvocationArgument; +import static com.alibaba.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.decodeInvocationArgument; +import static com.alibaba.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.encodeInvocationArgument; import java.io.IOException; import java.util.HashMap; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboExporter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboExporter.java similarity index 89% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboExporter.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboExporter.java index 38be6d769d..e965da9626 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboExporter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboExporter.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; import java.util.Map; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.support.AbstractExporter; +import com.alibaba.dubbo.rpc.protocol.AbstractExporter; /** * DubboExporter diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboInvoker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboInvoker.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboInvoker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboInvoker.java index f3520e31d3..b5a7e852c0 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboInvoker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboInvoker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.URL; @@ -28,8 +28,8 @@ import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcContext; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.RpcInvocation; -import com.alibaba.dubbo.rpc.support.AbstractInvoker; -import com.alibaba.dubbo.rpc.support.FutureAdapter; +import com.alibaba.dubbo.rpc.protocol.AbstractInvoker; +import com.alibaba.dubbo.rpc.protocol.FutureAdapter; /** * DubboInvoker diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboProtocol.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboProtocol.java similarity index 99% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboProtocol.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboProtocol.java index a56ba650d5..d9b8f85e51 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/DubboProtocol.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboProtocol.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; import java.net.InetSocketAddress; import java.util.ArrayList; @@ -47,7 +47,7 @@ import com.alibaba.dubbo.rpc.Protocol; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.RpcInvocation; -import com.alibaba.dubbo.rpc.support.AbstractProtocol; +import com.alibaba.dubbo.rpc.protocol.AbstractProtocol; /** * dubbo protocol support. diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/LazyConnectExchangeClient.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/LazyConnectExchangeClient.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java index 7049aa5382..48e794f734 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/LazyConnectExchangeClient.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo; +package com.alibaba.dubbo.rpc.protocol.dubbo; import java.net.InetSocketAddress; import java.util.concurrent.locks.Lock; @@ -29,6 +29,7 @@ import com.alibaba.dubbo.remoting.exchange.ExchangeClient; import com.alibaba.dubbo.remoting.exchange.ExchangeHandler; import com.alibaba.dubbo.remoting.exchange.Exchangers; import com.alibaba.dubbo.remoting.exchange.ResponseFuture; +import com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeClient; import com.alibaba.dubbo.rpc.RpcConstants; /** @@ -42,7 +43,7 @@ final class LazyConnectExchangeClient implements ExchangeClient { private final URL url; private final ExchangeHandler requestHandler; - private volatile ExchangeClient client; + private volatile HeaderExchangeClient client; private final Lock connectLock = new ReentrantLock(); //lazy connect 如果没有初始化时的连接状态 private final boolean initialState ; @@ -64,7 +65,8 @@ final class LazyConnectExchangeClient implements ExchangeClient { try { if (client != null) return; - this.client = Exchangers.connect(url, requestHandler); + this.client = new HeaderExchangeClient(Exchangers.connect(url, requestHandler)); +// if (client == ) } finally { connectLock.unlock(); } diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/status/ServerStatusChecker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java similarity index 91% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/status/ServerStatusChecker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java index 86074d1a73..b69ad3fd7e 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/status/ServerStatusChecker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.status; +package com.alibaba.dubbo.rpc.protocol.dubbo.status; import java.util.Collection; @@ -21,7 +21,7 @@ import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.status.Status; import com.alibaba.dubbo.common.status.StatusChecker; import com.alibaba.dubbo.remoting.exchange.ExchangeServer; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * ServerStatusChecker diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/status/ThreadPoolStatusChecker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java similarity index 93% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/status/ThreadPoolStatusChecker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java index 7529d998ba..61c7672a80 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/status/ThreadPoolStatusChecker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.status; +package com.alibaba.dubbo.rpc.protocol.dubbo.status; import java.util.Collection; import java.util.concurrent.Executor; @@ -27,7 +27,7 @@ import com.alibaba.dubbo.remoting.Server; import com.alibaba.dubbo.remoting.exchange.ExchangeServer; import com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeServer; import com.alibaba.dubbo.remoting.transport.support.handler.WrappedChannelHandler; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * ThreadPoolStatusChecker diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/ChangeTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/ChangeTelnetHandler.java similarity index 93% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/ChangeTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/ChangeTelnetHandler.java index 20aac2bea7..0394f2c4b7 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/ChangeTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/ChangeTelnetHandler.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.remoting.Channel; import com.alibaba.dubbo.remoting.telnet.TelnetHandler; import com.alibaba.dubbo.remoting.telnet.support.Help; import com.alibaba.dubbo.rpc.Exporter; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * ChangeServiceTelnetHandler diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/CountTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/CountTelnetHandler.java similarity index 96% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/CountTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/CountTelnetHandler.java index cc8b73e92d..27d8a46ee9 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/CountTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/CountTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import java.lang.reflect.Method; import java.util.ArrayList; @@ -30,7 +30,7 @@ import com.alibaba.dubbo.remoting.telnet.support.TelnetUtils; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.RpcStatus; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * CountTelnetHandler diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/CurrentTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/CurrentTelnetHandler.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/CurrentTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/CurrentTelnetHandler.java index 398bc50ed4..b81b82c9c1 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/CurrentTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/CurrentTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.remoting.Channel; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/InvokeTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java similarity index 95% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/InvokeTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java index 4c0f1f439d..fddb054270 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/InvokeTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import java.lang.reflect.Method; import java.util.List; @@ -29,7 +29,7 @@ import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.RpcContext; import com.alibaba.dubbo.rpc.RpcInvocation; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * InvokeTelnetHandler diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/ListTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandler.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/ListTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandler.java index bd8bae8607..28c0ada8e4 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/ListTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import java.lang.reflect.Method; @@ -24,7 +24,7 @@ import com.alibaba.dubbo.remoting.telnet.TelnetHandler; import com.alibaba.dubbo.remoting.telnet.support.Help; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * ListTelnetHandler diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/LogTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/LogTelnetHandler.java similarity index 98% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/LogTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/LogTelnetHandler.java index d9670a6e7e..25be1a8ad0 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/LogTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/LogTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import java.io.File; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/PortTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/PortTelnetHandler.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/PortTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/PortTelnetHandler.java index d5ada09462..745362778e 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/PortTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/PortTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import java.util.Collection; @@ -24,7 +24,7 @@ import com.alibaba.dubbo.remoting.exchange.ExchangeChannel; import com.alibaba.dubbo.remoting.exchange.ExchangeServer; import com.alibaba.dubbo.remoting.telnet.TelnetHandler; import com.alibaba.dubbo.remoting.telnet.support.Help; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * ServerTelnetHandler diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/TraceTelnetHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/TraceTelnetHandler.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/TraceTelnetHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/TraceTelnetHandler.java index 46155c71b7..69de1b5c71 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/dubbo/telnet/TraceTelnetHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/TraceTelnetHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.dubbo.telnet; +package com.alibaba.dubbo.rpc.protocol.dubbo.telnet; import java.lang.reflect.Method; @@ -24,8 +24,8 @@ import com.alibaba.dubbo.remoting.telnet.TelnetHandler; import com.alibaba.dubbo.remoting.telnet.support.Help; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.dubbo.DubboProtocol; import com.alibaba.dubbo.rpc.filter.TraceFilter; +import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol; /** * TraceTelnetHandler diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmExporter.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmExporter.java similarity index 89% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmExporter.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmExporter.java index e7183d3fab..bc234e7e55 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmExporter.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmExporter.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.injvm; +package com.alibaba.dubbo.rpc.protocol.injvm; import java.util.Map; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.support.AbstractExporter; +import com.alibaba.dubbo.rpc.protocol.AbstractExporter; /** * InjvmExporter diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmInvoker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmInvoker.java similarity index 91% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmInvoker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmInvoker.java index 3766afc29c..296593ea48 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmInvoker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmInvoker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.injvm; +package com.alibaba.dubbo.rpc.protocol.injvm; import java.util.Map; @@ -23,7 +23,7 @@ import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Result; -import com.alibaba.dubbo.rpc.support.AbstractInvoker; +import com.alibaba.dubbo.rpc.protocol.AbstractInvoker; /** * InjvmInvoker diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmProtocol.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmProtocol.java similarity index 92% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmProtocol.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmProtocol.java index 3f79117e13..c03353a1d5 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/injvm/InjvmProtocol.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/protocol/injvm/InjvmProtocol.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.injvm; +package com.alibaba.dubbo.rpc.protocol.injvm; import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.URL; @@ -21,7 +21,7 @@ import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; import com.alibaba.dubbo.rpc.RpcException; -import com.alibaba.dubbo.rpc.support.AbstractProtocol; +import com.alibaba.dubbo.rpc.protocol.AbstractProtocol; /** * InjvmProtocol diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/EchoProxyFactoryWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/EchoProxyFactoryWrapper.java similarity index 89% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/EchoProxyFactoryWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/EchoProxyFactoryWrapper.java index 8bc6664dad..a7af922669 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/EchoProxyFactoryWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/EchoProxyFactoryWrapper.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.wrapper; +package com.alibaba.dubbo.rpc.proxy; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Invoker; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcException; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.service.EchoService; +import com.alibaba.dubbo.service.EchoService; /** * EchoProxyFactoryWrapper diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/InvokerHandler.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/InvokerHandler.java similarity index 97% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/InvokerHandler.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/InvokerHandler.java index 2a1a42cab0..d2c10e2f4c 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/InvokerHandler.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/InvokerHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.support; +package com.alibaba.dubbo.rpc.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/InvokerWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/InvokerWrapper.java similarity index 98% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/InvokerWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/InvokerWrapper.java index 05c4988d70..17299bf26e 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/InvokerWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/InvokerWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.support; +package com.alibaba.dubbo.rpc.proxy; import java.lang.reflect.InvocationTargetException; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/MockInvoker.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/MockInvoker.java similarity index 94% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/MockInvoker.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/MockInvoker.java index c512e2cfc6..da1f786ade 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/MockInvoker.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/MockInvoker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.wrapper; +package com.alibaba.dubbo.rpc.proxy; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Invocation; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/MockProxyFactoryWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/MockProxyFactoryWrapper.java similarity index 93% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/MockProxyFactoryWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/MockProxyFactoryWrapper.java index 39ca2299e7..832c96298b 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/MockProxyFactoryWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/MockProxyFactoryWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.wrapper; +package com.alibaba.dubbo.rpc.proxy; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.URL; @@ -24,9 +24,9 @@ import com.alibaba.dubbo.common.utils.ConfigUtils; import com.alibaba.dubbo.common.utils.NetUtils; import com.alibaba.dubbo.common.utils.ReflectUtils; import com.alibaba.dubbo.rpc.Invoker; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcException; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.service.GenericService; /** * MockProxyFactoryWrapper diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/StubProxyFactoryWrapper.java similarity index 95% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/StubProxyFactoryWrapper.java index 0cafb2c9b7..e59c6237f7 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/StubProxyFactoryWrapper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.wrapper; +package com.alibaba.dubbo.rpc.proxy; import java.lang.reflect.Constructor; @@ -30,10 +30,10 @@ import com.alibaba.dubbo.common.utils.StringUtils; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.RpcConstants; import com.alibaba.dubbo.rpc.RpcException; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.service.GenericService; /** * StubProxyFactoryWrapper diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/javassist/JavassistProxyFactory.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java similarity index 90% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/javassist/JavassistProxyFactory.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java index b4cafc683d..fa769f1b99 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/javassist/JavassistProxyFactory.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.support.javassist; +package com.alibaba.dubbo.rpc.proxy.javassist; import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.common.bytecode.Proxy; import com.alibaba.dubbo.common.bytecode.Wrapper; import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.proxy.support.InvokerHandler; -import com.alibaba.dubbo.rpc.proxy.support.InvokerWrapper; +import com.alibaba.dubbo.rpc.ProxyFactory; +import com.alibaba.dubbo.rpc.proxy.InvokerHandler; +import com.alibaba.dubbo.rpc.proxy.InvokerWrapper; /** * JavaassistRpcProxyFactory diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/jdk/JdkProxyFactory.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/jdk/JdkProxyFactory.java similarity index 90% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/jdk/JdkProxyFactory.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/jdk/JdkProxyFactory.java index f1f1e31dc1..bb389aa3bd 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/support/jdk/JdkProxyFactory.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/proxy/jdk/JdkProxyFactory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.proxy.support.jdk; +package com.alibaba.dubbo.rpc.proxy.jdk; import java.lang.reflect.Method; import java.lang.reflect.Proxy; @@ -21,9 +21,9 @@ import java.lang.reflect.Proxy; import com.alibaba.dubbo.common.Extension; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Invoker; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.proxy.support.InvokerHandler; -import com.alibaba.dubbo.rpc.proxy.support.InvokerWrapper; +import com.alibaba.dubbo.rpc.ProxyFactory; +import com.alibaba.dubbo.rpc.proxy.InvokerHandler; +import com.alibaba.dubbo.rpc.proxy.InvokerWrapper; /** * JavaassistRpcProxyFactory diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/EchoService.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/service/EchoService.java similarity index 93% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/EchoService.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/service/EchoService.java index c09fcd9e90..b4e5eb6b59 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/EchoService.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/service/EchoService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.service; +package com.alibaba.dubbo.service; /** * Echo service. diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/GenericException.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/service/GenericException.java similarity index 93% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/GenericException.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/service/GenericException.java index 81be78fa33..1c8c829f06 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/GenericException.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/service/GenericException.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.service; +package com.alibaba.dubbo.service; import com.alibaba.dubbo.common.utils.StringUtils; diff --git a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/GenericService.java b/dubbo-rpc/src/main/java/com/alibaba/dubbo/service/GenericService.java similarity index 96% rename from dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/GenericService.java rename to dubbo-rpc/src/main/java/com/alibaba/dubbo/service/GenericService.java index e8a0e3f3dc..d73a22e34d 100644 --- a/dubbo-rpc/src/main/java/com/alibaba/dubbo/rpc/service/GenericService.java +++ b/dubbo-rpc/src/main/java/com/alibaba/dubbo/service/GenericService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.dubbo.rpc.service; +package com.alibaba.dubbo.service; /** * 通用服务接口 diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolTest.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolTest.java index 5ddff56602..60faed1811 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolTest.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolTest.java @@ -23,7 +23,6 @@ import org.junit.Test; import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; import com.alibaba.dubbo.rpc.support.IEcho; /** diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolUtils.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolUtils.java index 8861c24ec8..46e59403c8 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolUtils.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/ProtocolUtils.java @@ -17,7 +17,6 @@ package com.alibaba.dubbo.rpc; import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; /** * TODO Comment of ProtocolUtils diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/generic/EnumBak.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/generic/EnumBak.java index cf797e0df0..b2b80a8efa 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/generic/EnumBak.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/generic/EnumBak.java @@ -29,11 +29,11 @@ import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.common.utils.NetUtils; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.proxy.ProxyFactory; -import com.alibaba.dubbo.rpc.service.GenericService; +import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.support.DemoService; import com.alibaba.dubbo.rpc.support.DemoServiceImpl; import com.alibaba.dubbo.rpc.support.Type; +import com.alibaba.dubbo.service.GenericService; public class EnumBak { diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/DemoRpcProtocol.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/DemoRpcProtocol.java index cf7db4f636..53e5cf9729 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/DemoRpcProtocol.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/DemoRpcProtocol.java @@ -31,9 +31,9 @@ import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.RpcException; import com.alibaba.dubbo.rpc.RpcInvocation; -import com.alibaba.dubbo.rpc.support.AbstractExporter; -import com.alibaba.dubbo.rpc.support.AbstractInvoker; -import com.alibaba.dubbo.rpc.support.AbstractProtocol; +import com.alibaba.dubbo.rpc.protocol.AbstractExporter; +import com.alibaba.dubbo.rpc.protocol.AbstractInvoker; +import com.alibaba.dubbo.rpc.protocol.AbstractProtocol; /** * TestProtocolSupport. diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/MultiThreadTest.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/MultiThreadTest.java index 5f7bb22cee..45c16c3caa 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/MultiThreadTest.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/MultiThreadTest.java @@ -26,6 +26,7 @@ import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Protocol; +import com.alibaba.dubbo.rpc.ProxyFactory; public class MultiThreadTest extends TestCase { diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/ProtocolsTest.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/ProtocolsTest.java index 2fef144b7a..981cc84cdb 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/ProtocolsTest.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/ProtocolsTest.java @@ -23,7 +23,8 @@ import org.junit.Test; import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.service.EchoService; +import com.alibaba.dubbo.rpc.ProxyFactory; +import com.alibaba.dubbo.service.EchoService; /** * ProxiesTest diff --git a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/RpcFilterTest.java b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/RpcFilterTest.java index 5941363779..bb19e7fbcc 100644 --- a/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/RpcFilterTest.java +++ b/dubbo-rpc/src/test/java/com/alibaba/dubbo/rpc/proxy/RpcFilterTest.java @@ -20,7 +20,8 @@ import junit.framework.TestCase; import com.alibaba.dubbo.common.ExtensionLoader; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.rpc.Protocol; -import com.alibaba.dubbo.rpc.service.EchoService; +import com.alibaba.dubbo.rpc.ProxyFactory; +import com.alibaba.dubbo.service.EchoService; public class RpcFilterTest extends TestCase { diff --git a/pom.xml b/pom.xml index cf18fec4d6..29f241d408 100644 --- a/pom.xml +++ b/pom.xml @@ -29,16 +29,24 @@ dubbo-common dubbo-remoting + dubbo-remoting-netty dubbo-remoting-mina dubbo-remoting-grizzly dubbo-rpc + dubbo-rpc-default + dubbo-rpc-injvm dubbo-rpc-rmi dubbo-rpc-hessian + dubbo-rpc-xfire dubbo-cluster dubbo-registry + dubbo-registry-default + dubbo-registry-jndi dubbo-registry-multicast dubbo-registry-zookeeper dubbo-monitor + dubbo-monitor-default + dubbo-monitor-jmx dubbo-config dubbo-container dubbo @@ -55,6 +63,7 @@ 1.1.6 3.1 3.3.3 + 1.0.13 1.2.16 1.6.2 @@ -124,6 +133,11 @@ zookeeper ${zookeeper_version} + + jfree + jfreechart + ${jfreechart_version} + log4j