Installing Chemaxon (Win2008 64-bit) - Soap Parameter Error

User 2c6aa21beb

23-02-2010 17:15:44

Installing Chemaxon on a Windows 2008 64-bit - Soap
Parameter Error


 


When I try to Insert a chemical structure using the ajax I’m getting the
following error;


 


Webpage error details in soap.js


User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT
6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET
CLR 3.5.30729)


Timestamp: Tue, 23 Feb 2010 16:47:22 UTC


Message: Parameter number does not match service method
requirements


Line: 154


Char: 4


I debugged the soap.js javascript file and found that ‘SOAP.paramNames’
in ‘checkParameters: function(params)’ is coming in empty to the function, but cant figure out
why this is.


Tomcat is reporting


[ERROR] The endpoint reference (EPR) for the Operation not found is http://kinlaptop024/axis2/services/JChemSearchWS and the WSA Action = null
org.apache.axis2.AxisFault: The endpoint reference (EPR) for the Operation not found is http://kinlaptop024/axis2/services/JChemSearchWS and the WSA Action = null


 


System:


JChemWebServices 5.3.0.2


Java JDK (tired version shipped with Web services and JDK
1.6.0_18)


Java JRE (version shipped with Web services)


JChem 5.3.0.2 with JRE


 


I also tried using Tomcat 6.0 without any luck.


I have attached an image of the error and I would
apprecicate any help


Kind Regards


Karl

ChemAxon ebbce65bcf

24-02-2010 16:27:38

Hi Karl,


I just checked JChemWebServices 5.3.0.2, and works perfectly on localhost. Have you tried this case first? After successfully installed and started the Web services you should check it by typing the following url into your address bar of your browser. By default WSs use the port 8180, but maybe you set it to 8080 (as I see it in your screenshot).


http://localhost:8080/axis2/services/JChemSearchWS?wsdl


Does it work? I don't know how "kinlaptop024" is configured. But it should be the machine where the WS is installed, and should listen on port 8180 / 8080. Then you should try to get the WSDL using the IP address of that machine with the proper port (8080, or 8180 if you haven't changed the configuration) first.


The tomcat log you got is because you requested http://kinlaptop024/axis2/services/JChemSearchWS , but didn't specified the service method, I think. The same happens when you simply type this in the browser's address bar, maybe you did this. But this means that the Axis is running and accessible on kinlaptop024...


Anyway, if you can access the WSDL file, and the example does not work, you should check the Ajax configuration file (config.xml: soapPath and soapMethod sections), since it has to follow the configuration changes you make.


I hope i could help, but in case these information weren't enough to solve the problem, please send me your config.xml file (without the password, of course), and the HTTP requests / responses of the Ajax example. Maybe some more information would be also useful about the exact architecture to understand your case better.


Regards,


Roland

User 2c6aa21beb

24-02-2010 18:22:16

Hi Roland, thanks for the detailed response.


 


Chemaxon WebServices on port 8180


Apache Tomcat runs on port 8080


Both the following work (i.e. displays the xml in the browser)


 http://localhost:8180/axis2/services/JChemSearchWS?wsdl (this also works for the dns name and the ip address )


 


http://localhost:8080/axis2/services/JChemSearchWS?wsdl


 


I have attached the config.xml file for the webservices, the username or password is for a test system, so I didnt remove anything from the file. Can you please check to see if you can connect to a database on another machine using your test 64bit system.


It should be noted that the database is on another machine and hence why there is a IP address there. I also tried the DNS name for the database server without luck.


 


Any help will be appreciated,


Karl

ChemAxon ebbce65bcf

25-02-2010 09:02:28

Karl,


And neither http://localhost:8080/ajax nor http://localhost:8180/ajax works? Now I wouldn't think it is a 64-bit problem, or you have tried the same on a 32-bit Windows and it worked? Could you send me the HTTP messages (headers and contents) of the WS, please? To retrieve them you can use FireBug's Net panel in FireFox.


Thanks,


Roland

User 2c6aa21beb

25-02-2010 11:38:33

Hi Roland,
 
Both http://localhost:8080/ajax and  http://localhost:8180/ajax work fine, its just when I try to  insert a chemical structure I get the error the soap error using IE.
When I try it on Firefox it doesn report the soap error but just shows the applet circle loading icon.

I have attached the logs for Tomcat, Header and Generator as request.

Many Thanks
Karl


 


p.s. I just used the Chemxaon Webservices (port == 8180) here so that I dont confuse things

ChemAxon ebbce65bcf

25-02-2010 12:15:11

I think, I know what the problem is, although I can't find addStructure web service call among the HTTP messages, runCompleteSearch is the last one (and the logs are OK).


For some reason your config.xml file is obsolete. We had some refactoring and since then the data manipulation web services can be found in DataManipulationWS instead of JChemSearchWS. The soapPath section in the xml should look like this:




  <tabledata>/axis2/services/JChemSearchWS</tabledata>



  <complete>/axis2/services/JChemSearchWS</complete>



  <getmoldata>/axis2/services/JChemSearchWS</getmoldata>



  <insert>/axis2/services/DataManipulationWS</insert>



  <edit>/axis2/services/DataManipulationWS</edit>



  <remove>/axis2/services/DataManipulationWS</remove>



  <export>/axis2/services/JChemSearchWS</export>



  <info>/axis2/services/JChemSearchWS</info>



Possibly it helps. Anyway, the WS package I downloaded had a correct Ajax configuration file. Could you tell me, how did you get this wrong one?


Regards,


Roland

ChemAxon ebbce65bcf

25-02-2010 12:34:30

I see now. There is a bug in the msi installer. It generates a wrong config.xml. Will be fixed, soon.


Sorry for this issue.


Roland

User 2c6aa21beb

25-02-2010 14:24:29

Hi Roland, I needed to do a reinstall to verify the msi installs the wrong config file.


I'm just testing the application and it seems that the soap protocols have changed in the new version.


I was using this to get the connection;


<web:getConnection><web:driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</web:driver><web:url>jdbc:sqlserver://192.168.0.73:1433;databaseName=dev971;SelectMethod=cursor</web:url><web:username>dev971</web:username><web:password>livelink</web:password><web:propertyTable>JChemProperties1</web:propertyTable></web:getConnection>


 


now it seems I need to do this


<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soap:Body>
            <getConnectionAndTableInfo xmlns="http://webservice.jchem.chemaxon">
                <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
                <url>jdbc:sqlserver://192.168.0.73:1433;databaseName=dev971;SelectMethod=cursor</url>
                <username>dev971</username>
                <password>livelink</password>
                <propertyTable>JChemProperties1</propertyTable>
            </getConnectionAndTableInfo>
        </soap:Body>
    </soap:Envelope>


 


Is this correct?? because the header infomation is different than whats in


https://www.chemaxon.com/webservices/soap/ConnectionWS.html


 


Cheers


Karl

ChemAxon ebbce65bcf

25-02-2010 14:39:38

Yes, it is correct, and as I remember we always suggested this message format in the documentation. To be honest I don't know how could your previous implementation work.


Roland

User 2c6aa21beb

25-02-2010 14:45:57

Hi Roland, the previous implementation was for the 32bit Chemaxon i.e. JChemWebServices-5_2_06, and this works fine. Now that the customer wanted 64bit, the implemention needs changing because the installation has changed.


 


I didnt see this mentioned in the forum or on the web page, is there a link to the changes needed?


Do you have the soap documenation for the latest version i.e the 64 bit version?


 


Cheers


Karl

User c1ce6b3d19

02-03-2010 07:56:05

Karl,


Sorry, but I don't fully understand your last message.  


 


The history of changes is located here:


https://www.chemaxon.com/jchem/changes.html


Specifically the refactoring is included in the notes on the 5.3 release: 





The standard soap message format (as seen in the SOAP message documentation for each service) is the same for both 32 and 64 bit versions.   


 


Have I answered all your questions?


Jon

User 2c6aa21beb

02-03-2010 11:04:27


Hi Jon,


 


I'm just testing the application in 64 bit and it seems that the soap protocols have changed in the new version.


 


I'm creating the xml request to call the web services from Livelink, document management system,


I was using this to get the connection;


<web:getConnection><web:driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</web:driver><web:url>jdbc:sqlserver://192.168.0.73:1433;databaseName=dev971;SelectMethod=cursor</web:url><web:username>dev971</web:username><web:password>livelink</web:password><web:propertyTable>JChemProperties1</web:propertyTable></web:getConnection>


now it seems I need to do this


<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soap:Body>
            <getConnectionAndTableInfo xmlns="http://webservice.jchem.chemaxon">
                <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
                <url>jdbc:sqlserver://192.168.0.73:1433;databaseName=dev971;SelectMethod=cursor</url>
                <username>dev971</username>
                <password>livelink</password>
                <propertyTable>JChemProperties1</propertyTable>
            </getConnectionAndTableInfo>
        </soap:Body>
    </soap:Envelope>


Is this correct?? because the header infomation is different than whats in



 


Has the messaging communication changed? or am I reading this all wrong?


Sorry if this is a stupid question but I'm a little confused.


 


Karl



User c1ce6b3d19

02-03-2010 17:51:18

Karl,


As I see it, the two soap request messages from the last post are very similar. 


 


For now, let's put aside the details of the message envelop. 


The first message is a request to the getConnection method on the Connection Web Service (ConnectionWS). The second message is a request to the getConnectionAndTableInfo method on the JChemSearch Web Service (JChemSearchWS). 


As described here:


https://www.chemaxon.com/webservices/soap/JChemSearchWS.html#getconnectionandtableinfo


the second method is a convenience method that combines calls to getConnection and getStructureTableInfo together.  The parameters to the service methods are the same, but the output is different because the second method also returns information about the structure table.


 


Now, we can talk about the message envelop. 


The soap messages seen in the documentation are useful, because they explicitly show all parts of the soap message (envelope and body) and even the surrounding http message (header and payload, which contains the soap message).  I believe the first message you quoted only has the body of the soap message.  Often in the application specific SOAP frameworks (I think you said you are using livelink) many of these details are handled in a friendly way and they automagically try to handle the envelope.


 


I hope this helps.  Please let us know what else we can help with.


Jonathan Lee

User 2c6aa21beb

03-03-2010 11:01:09

Hi Jonathan,


Thanks for the detailed response.


I will try again with the soap requests from the Livelink System, and get back to you,


Kind Regards


Karl