Hi Jason, Thanks for asking. Everything is working if we add this directly. And we understand your concern about having conflicting dependencies with our application dependencies. And this is at the end a tradeoff between memory footprint optimization vs software project management efficiency.
Our application does not need specifically com.esotericsoftware.kryo. This is needed only by org.apache.dubbo:dubbo-serialization-kryo. And we really don't like the fact that we need to repeat the dependency declaration on this library, which is already defined by org.apache.dubbo:dubbo-serialization-kryo, but got ignored. Moreover, if we upgrade Dubbo version, we have to go check the new version of com.esotericsoftware.kryo used by the new Dubbo, and update it accordingly. At the end, I think we will accept the ERROR message on "Duplicate class". As their is no win-win solution for this case. Best regards Dat On 2019/10/25 10:47:32, Jason Joo <[email protected]> wrote: > Tien, > > It makes sense because it (and others like this) is an optional extension / > support / function. We should decide to introduce the extra dependencies it > requires when we enable it in configuration compared to the default. > Another similar thing is that which driver you should introduce among > zookeeper / nacos / redis / others depends which implementation of registry > you want to use and actually config. > > In most cases the version may not matter so much but you'd better to pick it > carefully to match just or newer to the version dubbo uses by default. > > So is everything going well now? After introducing the necessary dependencies? > > best regards, > > Jason > > > On Oct 25, 2019, at 18:19, Tien Dat PHAN <[email protected]> wrote: > > > > Hi Jason, > > > > The org.apache.dubbo:dubbo-serialization-kryo, for example, needs > > com.esotericsoftware.kryo.Kryo for Kryo serialization. > > > > org.apache.dubbo:dubbo-serialization-kryo itself has it declared in pom.xml > > > > But you do "unzip -Z dubbo-2.7.3.jar |awk '{print $9}' |grep kryo", you > > don't see it included. > > And we have to declare it directly in our application pom.xml > > We believe that this is not relevant, since we have to update the version > > of com.esotericsoftware.kryo according to > > org.apache.dubbo:dubbo-serialization-kryo. > > > > Best > > Dat > > > > On 2019/10/25 08:17:18, Jason Joo <[email protected]> wrote: > >> Hi, tien > >> > >> `dubbo` is a "fat" jar which includes all the classes you may possibly > >> use. > >> > >> You can confirm it using "unzip" as shown below: > >> > >> > >> bogon:2.7.3 hblzxsj$ unzip -Z dubbo-2.7.3.jar |awk '{print $9}' |grep kryo > >> org/apache/dubbo/common/serialize/kryo/ > >> org/apache/dubbo/common/serialize/kryo/KryoObjectInput.class > >> org/apache/dubbo/common/serialize/kryo/utils/ > >> org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.class > >> org/apache/dubbo/common/serialize/kryo/KryoSerialization.class > >> org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.class > >> META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/ > >> META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.properties > >> org/apache/dubbo/common/serialize/kryo/CompatibleKryo.class > >> org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory$1.class > >> org/apache/dubbo/common/serialize/kryo/KryoObjectOutput.class > >> org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.class > >> org/apache/dubbo/common/serialize/kryo/utils/ReflectionUtils.class > >> org/apache/dubbo/common/serialize/kryo/utils/KryoUtils.class > >> org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.class > >> META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml > >> > >> > >> > >> best regards, > >> > >> Jason > >> > >>> On Oct 25, 2019, at 16:06, Tien Dat PHAN <[email protected]> wrote: > >>> > >>> Hi Jason, > >>> > >>> We found that is not enough. > >>> As you have pointed out the dependency on > >>> `http://repo1.maven.org/maven2/org/apache/dubbo/` > >>> All dependencies wrapped by org.apache.dubbo:dubbo are marked as optional. > >>> This means on our application pom.xml, we have to declare the libraries > >>> that we need directly, as they are not brought directly from > >>> org.apache.dubbo:dubbo dependencies (check > >>> `https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html`) > >>> > >>> Best > >>> Dat > >>> > >>> On 2019/10/25 01:48:29, Jason Joo <[email protected]> wrote: > >>>> Hi, tien > >>>> > >>>> There is a problem in your `dependencies` section. > >>>> `dubbo` is a single package including all codes related dubbo core like > >>>> `netty-all` while `dubbo-serialization-kryo` is already included in > >>>> `dubbo`. > >>>> > >>>> If you want to do some customizing like removing some useless support in > >>>> `dubbo` you could use another way to introduce the dependencies like: > >>>> dubbo-common, dubbo-cluster and etc. . > >>>> > >>>> Certainly it will be so complicated because there are so many packages > >>>> to decide which are required to be introduced and you can see the full > >>>> list in `http://repo1.maven.org/maven2/org/apache/dubbo/` > >>>> <http://repo1.maven.org/maven2/org/apache/dubbo/%60>. > >>>> > >>>> So generally we just introduce `dubbo` instead. That's already enough. > >>>> > >>>> best regards, > >>>> > >>>> Jason > >>>> > >>>>> On Oct 25, 2019, at 00:31, Tien Dat PHAN <[email protected]> wrote: > >>>>> > >>>>> the dubbo-common library as the suggestion with the help o > >>>> > >>>> > >> > >> > >
