2

I try to load the weblogic.jar of the weblogic server (12.1.3) into the classpath dynamically, e.g. via an UrlClassloader during runtime. Then I want to use this classloader to load and start the emebedded weblogic server via reflection (the reason is that we build our own custom test runner):

File file = new File("D:/Oracle/wls12130/wlserver/server/lib/weblogic.jar");
URL[] urls = new URL[]{file.toURI().toURL()};
URLClassLoader urlClassLoader = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());

Class<?> factoryClass = urlClassLoader.loadClass("weblogic.server.embed.EmbeddedServerFactory");
Class<?> serverClass = urlClassLoader.loadClass("weblogic.server.embed.EmbeddedServer");

Object factoryObject = factoryClass.newInstance();
Method factoryMethod = factoryClass.getDeclaredMethod("getEmbeddedServer");
Method serverMethod = serverClass.getDeclaredMethod("start");
Object server = factoryMethod.invoke(factoryObject);
serverMethod.invoke(server);

The code works only if I add the weblogic.jar manually (typically located in 'server/lib' directory of the weblogic server) to the classpath in the IDE (eclipse or intellij). However, it is supposed to load the classes via the urlclassloader without the weblogic.jar loaded as an external library in the IDE, which gives me the following exception:

weblogic.server.embed.EmbeddedServerException: Error creating default domain
at weblogic.server.embed.internal.DomainConfig.createConfig(DomainConfig.java:235)
at weblogic.server.embed.internal.DomainConfig.getDefaultDomain(DomainConfig.java:143)
at weblogic.server.embed.internal.DomainConfig.ensureInitialized(DomainConfig.java:66)
at weblogic.server.embed.internal.EmbeddedServerImpl.ensureStarted(EmbeddedServerImpl.java:213)
at weblogic.server.embed.internal.EmbeddedServerImpl.start(EmbeddedServerImpl.java:111)
... 10 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at weblogic.management.internal.CIEDomainGenerator.generateDefaultDomain(CIEDomainGenerator.java:62)
at weblogic.server.embed.internal.EmbeddedServerProvider.createDefaultDomain(EmbeddedServerProvider.java:142)
at weblogic.server.embed.internal.DomainConfig.createConfig(DomainConfig.java:233)
... 14 more
Caused by: com.oracle.cie.domain.DomainConfigException: java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
at com.oracle.cie.domain.DomainInfoHelper.createDefaultDomain(DomainInfoHelper.java:824)
at com.oracle.cie.domain.DomainInfoHelper.createDefaultDomain(DomainInfoHelper.java:705)
... 21 more

What am I doing wrong here?

jric
  • 21
  • 4

0 Answers0