当前位置: 代码迷 >> Java Web开发 >> WebService服务端怎么符合客户端标准
  详细解决方案

WebService服务端怎么符合客户端标准

热度:337   发布时间:2016-04-14 21:28:18.0
WebService服务端如何符合客户端标准

<?xml version="1.0" encoding="UTF-8"?>
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP:Header xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:versionMajor="003" xmlns:versionMinor="001" xmlns:mustUnderstand="1" xmlns:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">       
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">           
            <wsu:Timestamp wsu:Id="bb4df9da-0af1-4030-b852-24c6a873eea1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                <wsu:Created>2014-11-21T01:56:59Z</wsu:Created>
                <wsu:Expires>2014-11-21T02:01:59Z</wsu:Expires>
            </wsu:Timestamp>
            <saml2:Assertion ID="69767b9a-6642-45c2-8ca2-b8a9ba1e3291" IssueInstant="2014-11-21T01:56:59Z" Version="2.0" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">               
                <saml2:Issuer>https://ws-gateway</saml2:Issuer>               
                <saml2:Subject>
                    <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified" NameQualifier="http://xmldefs.prepar.com/Technical/Security/NameQualifier/V1#Anonymous">UNKNOWN</saml2:NameID>
                    <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches"/>
                </saml2:Subject>
                <saml2:Conditions NotBefore="2014-11-21T01:55:59Z" NotOnOrAfter="2014-11-21T02:01:59Z"/>               
                <saml2:Advice>                   
                    <saml2:Assertion ID="63d396b4-c748-4c67-9bd1-19006e24e5e5" IssueInstant="2014-11-21T01:56:59Z" Version="2.0">                       
                        <saml2:Issuer>https://ws-gateway</saml2:Issuer>
                        <saml2:Subject>
                            <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified" NameQualifier="http://xmldefs.prepar.com/Technical/Security/NameQualifier/V1#LegacySystemID">TAMCRMQ</saml2:NameID>
                            <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches"/>
                        </saml2:Subject>                   
                        <saml2:Conditions NotBefore="2014-11-21T01:55:59Z" NotOnOrAfter="2014-11-21T02:01:59Z"/>                   
                        <saml2:AuthnStatement AuthnInstant="2014-11-21T01:56:59Z">
                            <saml2:AuthnContext>
                                <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient</saml2:AuthnContextClassRef>
                            </saml2:AuthnContext>
                        </saml2:AuthnStatement>
                    </saml2:Assertion>
                </saml2:Advice>
            </saml2:Assertion>
        </wsse:Security>
    </SOAP:Header>
    <!--  文件头结束   -->
 
    <!-- 文件内容  -->
 
    <SOAP:Body wsu:Id="72f5bb53-6f88-428c-837a-5a233a98e2d2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">   
        <ns0:ProcessShortMessages xmlns:ns0="http://xmldefs.prepar.com/Technical/ShortMessageService/V1">
            <ns0:ShortMessages>
                <!-- shorMessage begin-->
                <ns0:ShortMessage>
                    <ns0:TransmissionControl>
                        <ns0:Plan>premium</ns0:Plan>
                    </ns0:TransmissionControl>               
                    <ns0:Receivers>
                        <ns0:Receiver>
                            <ns0:Name>王静</ns0:Name>
                            <ns0:ShortMessageID>CM:123</ns0:ShortMessageID>
                        </ns0:Receiver>
                    </ns0:Receivers>               
                    <ns0:Message>
                        <ns0:MessageType listID="CL00618" listVersionID="1 " name="Standard"/>
                        <ns0:MessageTexts>
                            <ns0:AddRess>海淀区中关村科技大厦2501室</ns0:AddRess>
                        </ns0:MessageTexts>
                    </ns0:Message>
                </ns0:ShortMessage>               
                <!-- ShortMessage end-->
                <!-- shorMessage begin-->
                <ns0:ShortMessage>
                    <ns0:TransmissionControl>
                        <ns0:Plan>premium</ns0:Plan>
                    </ns0:TransmissionControl>               
                    <ns0:Receivers>
                        <ns0:Receiver>
                            <ns0:Name>王静</ns0:Name>
                            <ns0:ShortMessageID>CM:123</ns0:ShortMessageID>
                        </ns0:Receiver>
                    </ns0:Receivers>               
                    <ns0:Message>
                        <ns0:MessageType listID="CL00618" listVersionID="1 " name="Standard"/>
                        <ns0:MessageTexts>
                            <ns0:AddRess>海淀区中关村科技大厦2501室</ns0:AddRess>
                        </ns0:MessageTexts>
                    </ns0:Message>
                </ns0:ShortMessage>               
                <!-- ShortMessage end-->
                <!-- shorMessage begin-->
                <ns0:ShortMessage>
                    <ns0:TransmissionControl>
                        <ns0:Plan>premium</ns0:Plan>
                    </ns0:TransmissionControl>               
                    <ns0:Receivers>
                        <ns0:Receiver>
                            <ns0:Name>王静</ns0:Name>
                            <ns0:ShortMessageID>CM:123</ns0:ShortMessageID>
                        </ns0:Receiver>
                    </ns0:Receivers>               
                    <ns0:Message>
                        <ns0:MessageType listID="CL00618" listVersionID="1 " name="Standard"/>
                        <ns0:MessageTexts>
                            <ns0:AddRess>海淀区中关村科技大厦2501室</ns0:AddRess>
                        </ns0:MessageTexts>
                    </ns0:Message>
                </ns0:ShortMessage>               
                <!-- ShortMessage end-->
                <!-- shorMessage begin-->
                <ns0:ShortMessage>
                    <ns0:TransmissionControl>
                        <ns0:Plan>premium</ns0:Plan>
                    </ns0:TransmissionControl>               
                    <ns0:Receivers>
                        <ns0:Receiver>
                            <ns0:Name>王静</ns0:Name>
                            <ns0:ShortMessageID>CM:123</ns0:ShortMessageID>
                        </ns0:Receiver>
                    </ns0:Receivers>               
                    <ns0:Message>
                        <ns0:MessageType listID="CL00618" listVersionID="1 " name="Standard"/>
                        <ns0:MessageTexts>
                            <ns0:AddRess>海淀区中关村科技大厦2501室</ns0:AddRess>
                        </ns0:MessageTexts>
                    </ns0:Message>
                </ns0:ShortMessage>               
                <!-- ShortMessage end-->
                <!-- shorMessage begin-->
                <ns0:ShortMessage>
                    <ns0:TransmissionControl>
                        <ns0:Plan>premium</ns0:Plan>
                    </ns0:TransmissionControl>               
                    <ns0:Receivers>
                        <ns0:Receiver>
                            <ns0:Name>王静</ns0:Name>
                            <ns0:ShortMessageID>CM:123</ns0:ShortMessageID>
                        </ns0:Receiver>
                    </ns0:Receivers>               
                    <ns0:Message>
                        <ns0:MessageType listID="CL00618" listVersionID="1 " name="Standard"/>
                        <ns0:MessageTexts>
                            <ns0:AddRess>海淀区中关村科技大厦2501室</ns0:AddRess>
                        </ns0:MessageTexts>
                    </ns0:Message>
                </ns0:ShortMessage>               
                <!-- ShortMessage end-->
                <!-- shorMessage begin-->
                <ns0:ShortMessage>
                    <ns0:TransmissionControl>
                        <ns0:Plan>premium</ns0:Plan>
                    </ns0:TransmissionControl>               
                    <ns0:Receivers>
                        <ns0:Receiver>
                            <ns0:Name>王静</ns0:Name>
                            <ns0:ShortMessageID>CM:123</ns0:ShortMessageID>
                        </ns0:Receiver>
                    </ns0:Receivers>               
                    <ns0:Message>
                        <ns0:MessageType listID="CL00618" listVersionID="1 " name="Standard"/>
                        <ns0:MessageTexts>
                            <ns0:AddRess>海淀区中关村科技大厦2501室</ns0:AddRess>
                        </ns0:MessageTexts>
                    </ns0:Message>
                </ns0:ShortMessage>               
                <!-- ShortMessage end-->
            </ns0:ShortMessages>
        </ns0:ProcessShortMessages>
    </SOAP:Body>
</SOAP:Envelope>


上面是一段Web Service的客户端向服务端发送的报文,需要用Java解析,已经试过Jax-ws,xfire两种方式进行解析过了,xfire对SOAP:Header上的xmlns:versionMajor="003"报命名空间不能以数字开头,而Jax-ws不能解析<ns0:ShortMessages>的值,只能解析<arg0>的值,所以郁闷了,现在客户端还不能变,服务端必须满足这个报文的标准,哪位高手帮着解决下呢。
------解决思路----------------------
这样的项目本人之前也做过,楼上说的比较片面吧,如果是在搭建整个环境的时候,会是那样的,会把所有设计接口的厂家汇到一起讨论这个接口的架构,标准都是什么,确定好后大家自己去做自己的,只要保证标准一样就好。
但是想过比如说几年后有一套新的业务要加入的时候,其实原始的接口标准已经固定了,作为服务端必须去满足客户端的标准,而这种情况客户端业务作为总协调业务,不一定会提供webservice的服务端WSDL给新的服务端业务使用,因为可能他压根就没有。所以如何解析这段报文就成了重点了。
Java的webservice框架不少,比如说楼主用过的xfire或Jax-ws,还有就是axis2,具体我也不能一个一个试怎么能解析得出来。
不过我可以给楼主一个思路,也是我完成这个项目的思路,用http去处理,webservice只不过是把http请求更好的控制了,去帮你解析了报文,其实里面接值的还是servlet,request请求和response响应,那你都把报文弄出来了,一定知道http请求是什么样子的了,所以用servlet接一下处理吧,也就变成处理这个报文了。有问题可以再沟通。
  相关解决方案