Glassfish上的Web服务之间的共享库

时间:2011-06-12 08:44:33

标签: service jar shared

我需要在jax-ws应用服务器glassfish 3上部署多个Web服务。这些Web服务需要具有共享库,这意味着同一类的共享实例。

我知道我可以通过在“〜/ glassfish3 / glassfish / domains / domain1 / lib”目录中放一个jar来做到这一点。但我想知道这是否可能以更优雅的方式实现:我想将共享库jar置于我部署的Web服务战中,然后从我在同一应用服务器上部署的另一场战争中访问该库。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我自己找到了Glassfish的解决方案:基本上我只是部署了一个类(SharedClassLoader),它继承自URLClassLoader作为上述目录中的共享库jar。然后我使用这个类加载器作为引导程序:在调用Web服务时,类加载器层次结构扩展如下:如果URL尚未存在,则实例化SharedClassLoader并将其作为委托添加到{ {1}}在类加载器树中。通过为具有相同DelegatingClassLoader实例的每个Web服务执行此操作,它充当引导程序以引入更多类加载。 SharedClassLoader引用的jar也可以与其中一个Web服务一起部署,因为Glassfish将容器解压缩到SharedClassLoader

我希望这可以帮助任何有同样问题的人。我为我的学士论文解决了这个问题。如果有人需要更多信息,请问,我可以把你的论文发给你。