- This topic has 6 replies, 2 voices, and was last updated 9 years, 6 months ago by mongonv.
-
AuthorPosts
-
mongonvParticipantME 2015 seems to be scrambling the order of the methods in the generated WSDL when using the New Web Service Bottom Up option.
In previous ME versions the WSDL would have the methods in the same order they are in the Java source file used. In ME 2015 it seems to place them in a random order in the WSDL which makes them almost impossible to find in a large WSDL method set.
In one example, there are 5 methods that are located together in the Java file and in the WSDL they are spread throughout the WDSDL and not in the same order even. In the java file they are findId, get, add, update, and delete and in the WSDL they are in delete, get, findId, update, and add.
There seems to be no rhyme or reason to the order they come out in the WSDL.
Brian FernandesModeratorEd,
In previous ME versions the WSDL would have the methods in the same order they are in the Java source file used.
I didn’t think this was likely, so we ran a few tests in 10.7 and 2014 as well; the order of methods in the WSDL and the Java file were quite different. An interesting note is that the order is the same for multiple generations (given the same Java class) and, for the same Java class, the order of methods in the WSDL was the same in 10.7, 2014 and 2015.
MyEclipse internally calls JAX-WS tools to generate the WSDL file – of course, there is a lot of set up prior to this, but the WSDL is ultimately put together by wsgen.
To actually correct the order of methods we’d have to post process the WSDL and this is something we never programmed into MyEclipse. If you repeatedly generate from the same class, the order (while not matching the original Java file) should remain the same (I suspect it will be due to an order imposed by an internal hashing function in the wsgen too).
mongonvParticipantWe have been using the ME 10.x for a number of years and the order of the methods in the WSDL has always matched the order in the java file and still does if we use 10.7 today to generate the WSDLs (just did a generation for one of our apps still on 10.7.)
This is a major problem for us as many of our wsdls have hundreds of methods and now with ME 2015 its almost impossible to find the methods we need on our client side usage. We typically have 4-6 methods in a group that are pulled into our client interface as a set and those are now scattered throughout the entire wsdl structure.
If this is a permanent problem, not sure what we are going to do since this creates a major issue for us.
Brian FernandesModeratorEd,
We ran a number of additional tests today (on 10.7) – but the results were the same. While the order of generated operations in the WSDL typically remained the same for a given input, it definitely did not match the order of methods in the Java class. Just to be sure, can you tell me what options you had selected during generation (soap 1.2, MTOM, etc.?) – though I did try those variations as well and it did not make a difference.
I would say that perhaps you got lucky – possible for a 4-5 methods, but are you saying a hundred operations in a single WSDL file matched the method order in Java? A sanity check – are you sure that when you generate the WSDL now, a new WSDL file is being generated in your workspace? The option to do that is not on by default; could you be looking at an older WSDL file that was manually re-arranged? (you could try deleting the current WSDL File and then try regenerating). A rather obvious question (especially since you have another bug about the URL being incorrect), but would just like to be sure.
I would like to understand more about how the order matters for client side usage – not sure what you meant by “4-6 methods pulled out as a set”. Are you cutting and pasting sections of the WSDL elsewhere or are you using some client generation tools or the WSDL explorer? If you could elaborate, perhaps we could think of a solution that would make the order irrelevant?
mongonvParticipantHey Brian,
On your first questions, yes I am sure it is generating the web services as I copy the generated wsdl from the ME project to our user interface framework projects under a completely separate folder set, so I know they are regen’d each time.A little info on our dev setup, we use another platform for the user interface that has a GUI utility for pulling SOAP definitions from a wsdl and creating mappings to those web services for binding the data operations to the user interface. Our minimal set of web services for a table contains 5 web services: get all, get by example, add, update, and delete. When setting up the mappings in the framework’s utility we open the wsdl file in the utility, select the desired methods, tell it to remove the rest from this mapping, and then set the binding options.
It is the process of finding the methods in the wsdl for selection that is now a major problem. Before they had always come up in the same order as java, and have since ME 8-ish, which made it easy to find and select them. We do have several wsdls that are generated (about 7-8) but in a typical implementation for a client we normally have over 200 tables with a minimum of 5 methods each and over 100-200 specialized methods and these come in thru those 7-8 wsdls. That means each wsdl has 100-300 service methods and when they are scrambled like they are now its really hard, almost impossible, to use.
The options we select in ME 2015 when doing the New Web Service generation are:
– the project
– JAX-WS 2.1
– Create web service from Java class (Bottom-up scenario)
Second screen
– the java class
– Default delegate class name
– Generate WSDL in project
– Default options on all other optionsWe do not select SOAP 1.2 binding or MTOM support. We select pretty much the minimum options, leaving almost everything as default.
These are the same options we have been selecting for years and if I regenerate the wsdls for the same project under ME 10.7 they are still ordered the same as the Java file. This has held true for the more than a dozen applications we have built using ME as the backend and the user interface platform (with multiple installation projects of each app that get generated separately).
For us, this ability to generate the SOAP operations in a reliable order has been without question THE single most beneficial feature of using ME.
Brian FernandesModeratorWe do have several wsdls that are generated (about 7-8) but in a typical implementation for a client we normally have over 200 tables with a minimum of 5 methods each and over 100-200 specialized methods and these come in thru those 7-8 wsdls
So you have about 7-8 Java file which you feed into the bottom up wizard and each could have dozens of methods, corresponding to different tables – correct?
mongonvParticipantCorrect, the 7-8 bottom up files could have hundreds of methods in them. The 1000 plus web service methods are contained in those 7-8 java files.
-
AuthorPosts