Search in sources :

Example 1 with NativeJavaSerialization

use of org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization in project dubbo by alibaba.

the class HessianProtocolTest method testGenericInvokeWithNativeJava.

@Test
public void testGenericInvokeWithNativeJava() throws IOException, ClassNotFoundException {
    // temporary enable native java generic serialize
    System.setProperty(CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE, "true");
    HessianServiceImpl server = new HessianServiceImpl();
    Assertions.assertFalse(server.isCalled());
    ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
    Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
    int port = NetUtils.getAvailablePort();
    URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&generic=nativejava");
    Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
    Invoker<GenericService> invoker = protocol.refer(GenericService.class, url);
    GenericService client = proxyFactory.getProxy(invoker);
    Serialization serialization = new NativeJavaSerialization();
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    ObjectOutput objectOutput = serialization.serialize(url, byteArrayOutputStream);
    objectOutput.writeObject("haha");
    objectOutput.flushBuffer();
    Object result = client.$invoke("sayHello", new String[] { "java.lang.String" }, new Object[] { byteArrayOutputStream.toByteArray() });
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream((byte[]) result);
    ObjectInput objectInput = serialization.deserialize(url, byteArrayInputStream);
    Assertions.assertTrue(server.isCalled());
    Assertions.assertEquals("Hello, haha", objectInput.readObject());
    invoker.destroy();
    exporter.unexport();
    System.clearProperty(CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE);
}
Also used : GenericService(org.apache.dubbo.rpc.service.GenericService) ObjectOutput(org.apache.dubbo.common.serialize.ObjectOutput) ProxyFactory(org.apache.dubbo.rpc.ProxyFactory) ByteArrayOutputStream(java.io.ByteArrayOutputStream) NativeJavaSerialization(org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization) URL(org.apache.dubbo.common.URL) Serialization(org.apache.dubbo.common.serialize.Serialization) NativeJavaSerialization(org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization) ByteArrayInputStream(java.io.ByteArrayInputStream) ObjectInput(org.apache.dubbo.common.serialize.ObjectInput) Protocol(org.apache.dubbo.rpc.Protocol) Test(org.junit.jupiter.api.Test)

Aggregations

ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 URL (org.apache.dubbo.common.URL)1 ObjectInput (org.apache.dubbo.common.serialize.ObjectInput)1 ObjectOutput (org.apache.dubbo.common.serialize.ObjectOutput)1 Serialization (org.apache.dubbo.common.serialize.Serialization)1 NativeJavaSerialization (org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization)1 Protocol (org.apache.dubbo.rpc.Protocol)1 ProxyFactory (org.apache.dubbo.rpc.ProxyFactory)1 GenericService (org.apache.dubbo.rpc.service.GenericService)1 Test (org.junit.jupiter.api.Test)1