Recently I was assigned a task to separate all our old oracle based authentication (using OIM (Oracle Identity Manager) which in turn uses wlfullclient.jar) code into a war file. The project structure is as follows:
We use maven to construct the final ear file. The issue now is that if I exclude the wlfullclient.jar file from the authentication.war file by using provided maven scope, I will see the below error at deployment time
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: com.oracle.xmlns.idm.identity.webservice.spmlservice.SPMLService from [Module "deployment.cs-services-ear.ear.cis-myaccount-authentication.war:main" from Service Module Loader]
Detailed dependency analysis discovers that our code uses the oimclient.jar dependency which contains a class oracle.iam.diagnostic.utils.SPMLBase that uses com.oracle.xmlns.idm.identity.webservice.spmlservice.SPMLService as dependency. The exception was received since this com.oracle.xmlns.idm.identity.webservice.spmlservice.SPMLService dependency is not in the war and JBoss runtime environment.
Our system admin found a note (maybe from Oracle before) mentioned that wlfullclient.jar is needed. So I then changed the provided scope to compile scope for this jar and redeployed again. I received the below:
- org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.0.Alpha1-redhat-4.jar:7.2.0.Alpha1-redhat-4]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA.jar:1.0.4.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA.jar:1.0.4.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: java.lang.IllegalArgumentException: JBAS015533: Web Service endpoint weblogic.wsee.wstx.wsc.v11.endpoint.RegistrationPortImpl with URL pattern /RegistrationService_V11 is already registered. Web service endpoint weblogic.wsee.wstx.wsc.v11.endpoint.RegistrationRequesterPortImpl is requesting the same URL pattern.
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.0.Alpha1-redhat-4.jar:7.2.0.Alpha1-redhat-4]
... 5 more
If I disable the JBoss 7 web services subsystem, I can get this ear deployed, however, all our other web services will not be deployed and hence that's not an option.
In summary, our Oracle OIM code requires OIMClient.jar as a dependency which in turn requires wlfullcient.jar as a dependency (to create the web services client for the SPMLService (Service Provisioning Markup Language)). However, this wlfullcient.jar dependency uses an endpoint URL pattern /RegistrationService_V11 that has been used by the default JBoss web services subsystem (which has to be up to support our other web services deplopyment).
I have seen another thread talking about this @ (https://community.oracle.com/thread/2522076). I have tried following this blog (http://judahlim.blogspot.com/2011/11/same-url-pattern-error-on-glassfish-ose.html) by setting metadata-complete="true" at the end of the webh-app tag of the web.xml file
for the authentication.war and have no luck.
Anyone knows a way that I can make this to work?
Any input will be highly appreciated!