8.2.8. Web Service¶
8.2.8.1. There are limitations about Web services in general.¶
It is assumed that “Axis 2 ver1.4.1” is used as a Web service engine.
Please refer to the Axis2 Web site (http://axis.apache.org/axis2/java/core/index.html) for details about Axis2.
It is assumed that the transport layer of Web service uses HTTP.
It is assumed that the Web service is encrypted by SSL.
It is assumed that Web service in document-literal style is published.
Load distribution of Web service is realized by the load balancer function. For the distributed configuration, it is necessary to deploy the same Web service to each Web Application Server.If different Web services are deployed among Web Application Server,load distribution of Web service does not function correctly.
8.2.8.2. This is about the contents of Axis2 - 1.4.x current specifications.¶
Class that has inheritance relationship cannot be specified for the message element of Web service.
Internal class cannot be specified for the message element of Web service. Stub will not be processed correctly.
In case return value of the method which is published as a Web service is void and if it does not throw the exception,error will not be notified to the Web service client side, even if some error occurs.Axis2 Management Console (http://hostname/imart/axis2-admin/index.jsp) does not support the maintenance of session ID which utilizes URL rewriting.
With regard to XML to Java object mapping using the message receiver [RPCxxxxMessageReceiver],if there is no SOAP message element that corresponds to the Java object defined as [Array],it may be converted to [Null Array] or converted to [null]. With regard to Axis2 stub that uses “ADB” for the data binding method, when the mappingfrom XML to Java object takes place, Java object which is defined as [Array] is converted as follows.Becasue of these current specifications, if [null] is sent by the Web service provider side, Web service client side mayinterpret it as [Array with length 1 (first element is [null])], or if [Null Array] is sent bythe Web service provider side, Web service client side may interpret it as [null]. AXIS2-3870 was amended in Axis2-1.4.1. However, it has been confirmed that memory leak occurs if Axis2 stub is used.Axis2 1.4.1 client stub not freed (https://issues.apache.org/jira/browse/AXIS2-4007)intra-mart Accel Platform uses Axis2-1.4.1, which is a modified AXIS2-4007.Modified class is [org.apache.axis2.client.Stub]. In case JavaBean is specified as an argument of the method which is published as Web service,data of attribute in [Byte Array(=byte[])] format in JavaBean will not be correctly sent/received.This limitation comes from the current Axis2 specifications. If you need to send/receive the binary files,argument in [Byte Array(=byte[])] format needs to be specified for the method published as Web service instead of the JavaBean attribute. Return type of the method published as Web service cannot be void.
8.2.8.3. This is about the contents of authentication/authorization for Web service.¶
After the Web service is executed, it is explicitly discarded (log-out).Therefore, scope of intra-mart log-in session will be for each Web service call. Password which is used for authentication will always be the one kept in the account information of intra-mart Accel Platform.Even if LDAP linkage is done, password which is controlled by the LDAP side will not be used.User authentication/authorization of intra-mart Accel Platform does not support WS-Security.
When Web service is un-deployed, access authorization which was set for the subject Web service is not deleted.
8.2.8.4. This is about the contents of Web service provider.¶
It aims at making the existing Java class or JavaScript function to the Web service.(Web service by the bottom-up approach) With regard to making the script development model to Web service, functions that have the request parameter as argument are outsidethe scope of Web service. By the functions that have the request parameter as argument, they mean init() function, close() function, andfunctions that support action attributte of links or forms. With reggard to making the script development model to Web service, functions that update the value of argument are outside the scope ofWeb service. By the functions that update the value of argument, they mean not only the functions whose argument is referred to within the function,but also the functions that are used to return the result of running the function. With regard to making the script development model to Web service, functions that use the following APIs are outside the scope of Web service.
- forward()
- redirect()
- secureRedirect()
- transmission()
- Debug.browse()
- HTTPResponse.sendMessageBody()
- HTTPResponse.sendMessageBodyString()
- Module.download.send()
- Module.alert.back()
- Module.alert.link()
- Module.alert.reload()
- Module.alert.write()
- PageManager.redirect()
- HTTPResponse.sendMessageBodyFile()
- HTTPResponse.sendMessageBodyAsBinary()
- HTTPResponse.sendMessageBodyAsText()
- Transfer.toErrorPage()
- Transfer.toInformationPage()
- Transfer.toWarningPage()
With regard to making the event framework of JavaEE framework to the Web service,Web service will not function, if Java class which is published as Web service is stored in aar file.
8.2.8.5. These are the limitations about Web Service client.¶
SOAPClient object uses CodeGenerationEngine class of Axis2.Therefore, Web service that is not supported by CodeGenerationEngine cannot be called.SOAPClient object uses Axis2 stub which utilizes [ADB] for data binding method.
getSampleCode() function of SOAPClient object does not generate sample data for the types defined by restriction ofXML schema. You should refer to the specifications of Web service to be executed for types sample data are not generated for. get SampleCode() function of SOAPClient object cannot be displayed correctly, if the child element of input element of Web service operationis specified as [maxOccurs=”unbounded”].SOAPClient object supports the Web service in document-literal style.
SOAPClient does not support the Web service in asynchronous callback format.
In order to use SOAPClient object in WebSphere, it is necessary to set the [Class Loader Sequence] to[Class that initally loads application class loader]. If the compilation of auto-generated Java stub class fails when SOAPClient is used,it is necessary to set the environment variable to [AXIS2_HOME].SOAPClient object cannot use the Web service operation that has the same name as the reserved words of JavaScript.
It is not allowed to specify the one-letter only capital alphabet at the beginning of SOAP message element name.For example, if the SOAP message element name is “A0001”, Axis2 will generate JavaBeanswhose access method is “getA0001” and “setA0001”.This JavaBeans will return the property name “a0001”, and so the property name of return value object will become “a0001”.This is because the only-one capital alphabet letter at the beginning is changed to a small letter according to the JavaBEan specifications of property name. SOAPClient API stub code is not compatible with 2013 Summer(8.0.3) version or before.If following conditions are met, it does not function properly.
- In case it is migrated from the environment of 2013 Spring(8.0.3) or before
- In case Never mode is used as a stub creation method when SOAPClient API is used
- In case the stub code which is generated using the SOAPClient API of 2013 Spring(8.0.3) or before is placed
When these conditions are met, the stub code which was created by 2013 Spring(8.0.3) or before、and the stub code generated by the 2013 Summer(8.0.4) version or later are not compatible.Therefore, it is necessary to recreate and place the stub code using the new SOAPClient API of 2013 Summer(8.0.4) version or later.