QName exception when generating a Service Control in Weblogic Workshop 10.2
We recently upgraded Weblogic Workshop to version 10.2. When I went to regenerate an existing Service Control from a new WSDL file, I was greeted with a not so nice error popup...
Error Cause
An error was encountered while analyzing the WSDL: javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionUID = 4418622981026545151, local class serialVersionUID = -9120448754896609940
There was actually a bug filed and fixed with Sun about this issue but there still seems to be some kind of residual effects. At the bottom of the defect is the hint for the workaround :
-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0
Error Workaround
The problem has something to do with the types jar that is generated and the serialization of a QName field that is put in that jar. The JVM that is doing all of this is the VM that is running eclipse.
So you either need to add the -D parameter to the eclipse VM or use a different VM.
To perform either fix you'll need to open up the workSpaceStudio.ini file (e.g. D:\bea\workSpaceStudio_1.1\workSpaceStudio\workspaceStudio.ini). The VM is specified on the line after the -vm and the -D options are down toward the bottom.
Here's what my file looks like after the addition (this is just the -D workaround):
-vm D:/bea/jdk150_11/jre/bin/javaw.exe -vmargs -Xms384m -Xmx768m -XX:MaxPermSize=256m -XX:PermSize=192m -XX:NewRatio=3 -Xss256k -Dweblogic.home=D:/bea/wlserver_10.0 -Dosgi.install.area=D:\bea\tools\eclipse_pkgs\1.1\eclipse_3.2.2\eclipse -Dosgi.instance.area.default=D:/bea/user_projects/workspaces/workSpaceStudio -Dosgi.configuration.area=D:/bea/workSpaceStudio_1.1/workSpaceStudio/eclipse/configuration -Declipse.product=com.bea.workspacestudio.product.workspacestudio -Dosgi.splashPath=file:D:/bea/workSpaceStudio_1.1/workSpaceStudio/eclipse/plugins/com.bea.workspacestudio.product -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0
Now all you have to do is:
- restart Weblogic Workspace Studio
- regenerate the types JAR file
Now Create the Service Control should work without issue.
Using the Sun 1.6 JRE
Let's say you opted for the second solution, which was to use a different VM, and you happened to choose the Sun 1.6 VM. Everything will work fine with the Service Control generation but when you attempt to deploy to a running server you'll get this error:
org.eclipse.core.runtime.CoreException: Deployment Manager with URI, 'deployer:WebLogic:localhost:7001' and user, 'weblogic' cannot be created. javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException
It's always a fun rabbit hole when you upgrade stuff. Thankfully some other poor soul ran into this issue and figured out the workaround, another -D parameter:
-Dsun.lang.ClassLoader.allowArraySyntax=true
After you add that -D to the workSpaceStudio.ini file, all will be well.
Stack Trace
com.bea.workshop.webservices.servicecontrol.ui.except.TypesAnalysisFailedException: java.lang.reflect.InvocationTargetException at com.bea.workshop.webservices.servicecontrol.ui.wizards.SelectSCInfoPage.<init>(SelectSCInfoPage.java:135) at com.bea.workshop.webservices.servicecontrol.ui.GenerateSCWizard.getPageList(GenerateSCWizard.java:169) at com.bea.workshop.webservices.servicecontrol.ui.GenerateSCWizard.addPages(GenerateSCWizard.java:155) at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:499) at org.eclipse.jface.window.Window.create(Window.java:426) at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1124) at org.eclipse.jface.window.Window.open(Window.java:785) at com.bea.workshop.webservices.servicecontrol.ui.actions.NewSCGenAction.run(NewSCGenAction.java:106) at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:254) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:339) at org.eclipse.core.launcher.Main.basicRun(Main.java:283) at org.eclipse.core.launcher.Main.run(Main.java:984) at org.eclipse.core.launcher.Main.eclipse_main(Main.java:959) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.m7.installer.util.NitroxMain$1.run(NitroxMain.java:39) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Caused by: java.lang.reflect.InvocationTargetException at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:350) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:479) at com.bea.workshop.webservices.servicecontrol.ui.wizards.SelectSCInfoPage.<init>(SelectSCInfoPage.java:106) ... 45 more Caused by: com.bea.workshop.webservices.servicecontrol.ui.except.TypesAnalysisFailedException: com.bea.workshop.webservices.servicecontrol.ui.runtimes.BindingsException at com.bea.workshop.webservices.servicecontrol.ui.wizards.SelectSCInfoPage$1.run(SelectSCInfoPage.java:118) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113) Caused by: com.bea.workshop.webservices.servicecontrol.ui.runtimes.BindingsException at com.bea.workshop.webservices.servicecontrol.runtimes.ControlsRuntimeImpl.getJavaProjectTypeBindings(ControlsRuntimeImpl.java:91) at com.bea.workshop.webservices.servicecontrol.ui.wizards.SelectSCInfoPage$1.run(SelectSCInfoPage.java:112) ... 1 more Caused by: com.bea.control.servicecontrol.internal.validation.BindingsCheckException: Could not load the serialized tylar binding file (META-INF/binding-file.ser) from authorizationservicesTypes_JAXRPC.jar (tylar) at com.bea.control.servicecontrol.internal.validation.BindingsDataSource.loadBindingsStructures(BindingsDataSource.java:418) at com.bea.control.servicecontrol.internal.validation.BindingsDataSource.<init>(BindingsDataSource.java:54) at com.bea.control.servicecontrol.internal.validation.BindingsCheckUtility.getBindingsDataSourceIfValid(BindingsCheckUtility.java:343) at com.bea.workshop.webservices.servicecontrol.ui.util.BindingsChecker.addAsDataSourceIfCorrectType(BindingsChecker.java:144) at com.bea.workshop.webservices.servicecontrol.ui.util.BindingsChecker.addAsDataSourceIfCorrectType(BindingsChecker.java:118) at com.bea.workshop.webservices.servicecontrol.ui.util.BindingsChecker.lookForBindingsDataSources(BindingsChecker.java:98) at com.bea.workshop.webservices.servicecontrol.ui.util.BindingsChecker.<init>(BindingsChecker.java:35) at com.bea.workshop.webservices.servicecontrol.ui.util.JavaProjectTypeBindingsImpl.checkForCompatibleBindings(JavaProjectTypeBindingsImpl.java:94) at com.bea.workshop.webservices.servicecontrol.ui.util.JavaProjectTypeBindingsImpl.<init>(JavaProjectTypeBindingsImpl.java:32) at com.bea.workshop.webservices.servicecontrol.runtimes.ControlsRuntimeImpl.getJavaProjectTypeBindings(ControlsRuntimeImpl.java:86) ... 2 more Caused by: java.io.InvalidClassException: javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionUID = 4418622981026545151, local class serialVersionUID = -9120448754896609940 at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at java.util.HashMap.readObject(HashMap.java:1066) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at java.util.HashMap.readObject(HashMap.java:1067) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at com.bea.control.servicecontrol.internal.validation.BindingsDataSource.loadBindingsStructures(BindingsDataSource.java:407) ... 11 more
