下面列出了怎么用com.alibaba.dubbo.rpc.protocol.dubbo.support.ProtocolUtils的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void test_Lazy_ChannelReadOnly() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?lazy=true&connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
try{
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
fail();
}catch (IllegalStateException e) {
}
//invoke method --> init client
IDemoService service = (IDemoService)proxy.getProxy(invoker);
Assert.assertEquals("ok", service.get());
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
}
@BeforeClass
public static void setUp() {
StringBuilder buf = new StringBuilder();
StringBuilder buf2 = new StringBuilder();
Method[] methods = DemoService.class.getMethods();
for (Method method : methods) {
if (buf.length() > 0) {
buf.append("\r\n");
}
if (buf2.length() > 0) {
buf2.append("\r\n");
}
buf2.append(method.getName());
buf.append(ReflectUtils.getName(method));
}
detailMethods = buf.toString();
methodsName = buf2.toString();
ProtocolUtils.closeAll();
}
@Test
public void test_normal_channel_close_wait_gracefully() throws Exception {
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?scope=true&lazy=false");
Exporter<IDemoService> exporter = ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
Exporter<IDemoService> exporter0 = ProtocolUtils.export(new DemoServiceImpl0(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>) protocol.refer(IDemoService.class, url);
long start = System.currentTimeMillis();
try{
System.setProperty(Constants.SHUTDOWN_WAIT_KEY, "2000");
protocol.destroy();
}finally {
System.getProperties().remove(Constants.SHUTDOWN_WAIT_KEY);
}
long waitTime = System.currentTimeMillis() - start;
Assert.assertTrue(waitTime >= 2000);
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void test_Lazy_ChannelReadOnly() throws Exception {
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?lazy=true&connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>) protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
try {
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
fail();
} catch (IllegalStateException e) {
}
//invoke method --> init client
IDemoService service = (IDemoService) proxy.getProxy(invoker);
Assert.assertEquals("ok", service.get());
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
}
@BeforeClass
public static void setUp() {
StringBuilder buf = new StringBuilder();
StringBuilder buf2 = new StringBuilder();
Method[] methods = DemoService.class.getMethods();
for (Method method : methods) {
if (buf.length() > 0) {
buf.append("\r\n");
}
if (buf2.length() > 0) {
buf2.append("\r\n");
}
buf2.append(method.getName());
buf.append(ReflectUtils.getName(method));
}
detailMethods = buf.toString();
methodsName = buf2.toString();
ProtocolUtils.closeAll();
}
@Test
public void test_Lazy_ChannelReadOnly() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?lazy=true&connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
try{
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
fail();
}catch (IllegalStateException e) {
}
//invoke method --> init client
IDemoService service = (IDemoService)proxy.getProxy(invoker);
Assert.assertEquals("ok", service.get());
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
}
@BeforeClass
public static void setUp() {
StringBuilder buf = new StringBuilder();
StringBuilder buf2 = new StringBuilder();
Method[] methods = DemoService.class.getMethods();
for (Method method : methods) {
if (buf.length() > 0) {
buf.append("\r\n");
}
if (buf2.length() > 0) {
buf2.append("\r\n");
}
buf2.append(method.getName());
buf.append(ReflectUtils.getName(method));
}
detailMethods = buf.toString();
methodsName = buf2.toString();
ProtocolUtils.closeAll();
}
@Test
public void test_Lazy_ChannelReadOnly() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?lazy=true&connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
try{
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
fail();
}catch (IllegalStateException e) {
}
//invoke method --> init client
IDemoService service = (IDemoService)proxy.getProxy(invoker);
Assert.assertEquals("ok", service.get());
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
}
@BeforeClass
public static void setUp() {
StringBuilder buf = new StringBuilder();
StringBuilder buf2 = new StringBuilder();
Method[] methods = DemoService.class.getMethods();
for (Method method : methods) {
if (buf.length() > 0) {
buf.append("\r\n");
}
if (buf2.length() > 0) {
buf2.append("\r\n");
}
buf2.append(method.getName());
buf.append(ReflectUtils.getName(method));
}
detailMethods = buf.toString();
methodsName = buf2.toString();
ProtocolUtils.closeAll();
}
@Test
public void test_Lazy_ChannelReadOnly() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?lazy=true&connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
try{
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
fail();
}catch (IllegalStateException e) {
}
//invoke method --> init client
IDemoService service = (IDemoService)proxy.getProxy(invoker);
Assert.assertEquals("ok", service.get());
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
}
@BeforeClass
public static void setUp() {
StringBuilder buf = new StringBuilder();
StringBuilder buf2 = new StringBuilder();
Method[] methods = DemoService.class.getMethods();
for (Method method : methods) {
if (buf.length() > 0) {
buf.append("\r\n");
}
if (buf2.length() > 0) {
buf2.append("\r\n");
}
buf2.append(method.getName());
buf.append(ReflectUtils.getName(method));
}
detailMethods = buf.toString();
methodsName = buf2.toString();
ProtocolUtils.closeAll();
}
@Test
public void testSticky4() {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("dubbo://127.0.0.1:" + port + "/hi?" + Constants.LAZY_CONNECT_KEY + "=true");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
IDemoService service = (IDemoService) ProtocolUtils.refer(IDemoService.class, url);
Assert.assertEquals("ok", service.get());
}
public void exportService() {
// export one service first, to test connection sharing
serviceURL = serviceURL.addParameter("connections", 1);
URL hellourl = serviceURL.setPath(IHelloService.class.getName());
hello_exporter = ProtocolUtils.export(new HelloServiceImpl(), IHelloService.class, hellourl);
exporter = ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, serviceURL);
}
@Test
public void test_Normal_available() {
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>) protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
invoker.destroy();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void test_Normal_ChannelReadOnly() throws Exception {
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>) protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
// reset status since connection is shared among invokers
getClients(invoker)[0].removeAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY);
}
@Test
public void test_NoInvokers() throws Exception {
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>) protocol.refer(IDemoService.class, url);
ExchangeClient[] clients = getClients(invoker);
clients[0].close();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void testSticky4() {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("dubbo://127.0.0.1:"+port+"/hi?"+Constants.LAZY_CONNECT_KEY+"=true");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
IDemoService service = (IDemoService)ProtocolUtils.refer(IDemoService.class, url);
Assert.assertEquals("ok", service.get());
}
public void exportService(){
//先export一个service,测试共享连接的问题
serviceURL=serviceURL.addParameter("connections", 1);
URL hellourl = serviceURL.setPath(IHelloService.class.getName());
hello_exporter = ProtocolUtils.export(new HelloServiceImpl(), IHelloService.class, hellourl);
exporter = ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, serviceURL);
}
@Test
public void testSticky4() {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("dubbo://127.0.0.1:"+port+"/hi?"+Constants.LAZY_CONNECT_KEY+"=true");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
IDemoService service = (IDemoService)ProtocolUtils.refer(IDemoService.class, url);
Assert.assertEquals("ok", service.get());
}
@Test
public void test_NoInvokers() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
ExchangeClient[] clients = getClients(invoker);
clients[0].close();
Assert.assertEquals(false, invoker.isAvailable());
}
public void exportService(){
//先export一个service,测试共享连接的问题
serviceURL=serviceURL.addParameter("connections", 1);
URL hellourl = serviceURL.setPath(IHelloService.class.getName());
hello_exporter = ProtocolUtils.export(new HelloServiceImpl(), IHelloService.class, hellourl);
exporter = ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, serviceURL);
}
@Test
public void test_Normal_available(){
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
invoker.destroy();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void test_Normal_available(){
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
invoker.destroy();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void test_NoInvokers() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
ExchangeClient[] clients = getClients(invoker);
clients[0].close();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void testSticky4() {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("dubbo://127.0.0.1:"+port+"/hi?"+Constants.LAZY_CONNECT_KEY+"=true");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
IDemoService service = (IDemoService)ProtocolUtils.refer(IDemoService.class, url);
Assert.assertEquals("ok", service.get());
}
public void exportService(){
//先export一个service,测试共享连接的问题
serviceURL=serviceURL.addParameter("connections", 1);
URL hellourl = serviceURL.setPath(IHelloService.class.getName());
hello_exporter = ProtocolUtils.export(new HelloServiceImpl(), IHelloService.class, hellourl);
exporter = ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, serviceURL);
}
@Test
public void test_Normal_available(){
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
invoker.destroy();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void test_Normal_ChannelReadOnly() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
Assert.assertEquals(true, invoker.isAvailable());
getClients(invoker)[0].setAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY, Boolean.TRUE);
Assert.assertEquals(false, invoker.isAvailable());
//恢复状态,invoker共享连接
getClients(invoker)[0].removeAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY);
}
@Test
public void test_NoInvokers() throws Exception{
URL url = URL.valueOf("dubbo://127.0.0.1:20883/hi?connections=1");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
DubboInvoker<?> invoker = (DubboInvoker<?>)protocol.refer(IDemoService.class, url);
ExchangeClient[] clients = getClients(invoker);
clients[0].close();
Assert.assertEquals(false, invoker.isAvailable());
}
@Test
public void testSticky4() {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("dubbo://127.0.0.1:"+port+"/hi?"+Constants.LAZY_CONNECT_KEY+"=true");
ProtocolUtils.export(new DemoServiceImpl(), IDemoService.class, url);
IDemoService service = (IDemoService)ProtocolUtils.refer(IDemoService.class, url);
Assert.assertEquals("ok", service.get());
}