简体   繁体   中英

ServiceLoader usage in Axis2 web service code deployed on Tomcat web server

I have an .aar file deployed on Tomcat,Axis2 platform in Ubuntu. I'm using Oracle JDK1.7 Tomcat 7.0.35 and Axis2 1.6.2

Recently I made a refactoring to use java.util.ServiceLoader class to load implementations of some classes dynamically.

Here is my aar file structure:

META-INF folder

services.xml Contains info about the web service

services folder
    com.companyname...interfacename1 (contains implementation class name)
    com.companyname...interfacename2 (contains implementation class name)
    com.companyname...interfacename3 (contains implementation class name)

com folder
    companyname folder
        bla bla.class compiled class files here

In my Eclipse Development environment, my methods run w/o any problem but when they run in Axis2 Tomcat platform, ServiceLoader class can not load implementation classes. What can be the problem? Any help is appreciated. Thanks.

Just use one of your classes to obtain their classLoader,Then use it:

    ClassLoader classLoader = com.companyname.blabla.MyClass1.getClassLoader();

    java.util.ServiceLoader.load(blabla.class,classLoader);

It works both in Tomcat,Axis2 deployed code and in development environment unit test code!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM