2017-01-20 2 views
0

Ich versuche, einen JAX-WS-Service-Client auf einen WebSphere v8.5.5 App Server zu implementieren, und es verwenden, einen SOAP-Dienst aufrufen, die in einem anderen Einsatz ist Server. Ich habe schließlich alle Sicherheitsprobleme behoben und es ist eine erfolgreiche Anfrage zu machen, aber wenn es zu übersetzen die Antwort zurück an JAXB Objekte auf den Punkt, wirft es Kontext Probleme, die es nicht die entsprechende Klasse finden.WebSphere JAX-WS: JAXBException Klasse ist nicht auf diesen Zusammenhang bekannt

[1/20/17 16:21:56:131 EST] 000001aa JAXBUtils  3 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext new JAXBContext constructed, elapsed time msec: 1934 
[1/20/17 16:21:56:131 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext [created or retrieved from hard map] for [@preference.v1, @preference.v1_0.commonheadertypes, @preference.v1_0.filterheader, @preference.v1_0.filterheaderresponse, @preference.v1_0.getfilterheaderrequest, @preference.v1_0.getpreferencesrequest, @preference.v1_0.getpreferencesresponse, @preference.v1_0.isaliveresponse, @preference.v1_0.preference, @preference.v1_0.setpreferencesrequest, @preference.v1_0.setpreferencesresponse, [preference.v1.ObjectFactory], [preference.v1_0.commonheadertypes.ObjectFactory], [preference.v1_0.commonheadertypes.RequestHeader], [preference.v1_0.filterheader.ObjectFactory], [preference.v1_0.filterheaderresponse.FilterHeaderResponse], [preference.v1_0.filterheaderresponse.ObjectFactory], [preference.v1_0.getfilterheaderrequest.GetFilterHeaderRequest], [preference.v1_0.getfilterheaderrequest.ObjectFactory], [preference.v1_0.getpreferencesrequest.GetPreferencesRequest], [preference.v1_0.getpreferencesrequest.ObjectFactory], [preference.v1_0.getpreferencesresponse.GetPreferencesResponse], [preference.v1_0.getpreferencesresponse.ObjectFactory], [preference.v1_0.isaliveresponse.ObjectFactory], [preference.v1_0.isaliveresponse.Response], [preference.v1_0.preference.ObjectFactory], [preference.v1_0.setpreferencesrequest.ObjectFactory], [preference.v1_0.setpreferencesrequest.SetPreferencesRequest], [preference.v1_0.setpreferencesresponse.ObjectFactory], [preference.v1_0.setpreferencesresponse.SetPreferencesResponse], preference.v1, preference.v1.0.commonheadertypes, preference.v1.0.filterheader, preference.v1.0.filterheaderresponse, preference.v1.0.getfilterheaderrequest, preference.v1.0.getpreferencesrequest, preference.v1.0.getpreferencesresponse, preference.v1.0.isaliverequest, preference.v1.0.isaliveresponse, preference.v1.0.preference, preference.v1.0.setpreferencesrequest, preference.v1.0.setpreferencesresponse, preference.v1_0.commonheadertypes, preference.v1_0.commonheadertypes > preference.v1.0.commonheadertypes, preference.v1_0.filterheader, preference.v1_0.filterheaderresponse, preference.v1_0.getfilterheaderrequest, preference.v1_0.getfilterheaderrequest > preference.v1.0.getfilterheaderrequest, preference.v1_0.getpreferencesrequest, preference.v1_0.getpreferencesrequest > preference.v1.0.getpreferencesrequest, preference.v1_0.getpreferencesresponse, preference.v1_0.isaliveresponse, preference.v1_0.preference, preference.v1_0.setpreferencesrequest, preference.v1_0.setpreferencesrequest > preference.v1.0.setpreferencesrequest, preference.v1_0.setpreferencesresponse, preferences.v1] 
[1/20/17 16:21:56:132 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext also stored by the list of valid packages:[] 
[1/20/17 16:21:56:132 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext constructionType= BY_CLASS_ARRAY_PLUS_ARRAYS 
[1/20/17 16:21:56:133 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContextValue = org.ap[email protected]1b35cebd 
[1/20/17 16:21:56:133 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext = [email protected] 
[1/20/17 16:21:56:134 EST] 000001aa JAXBUtils  3 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContextCreate: creation completed 
[1/20/17 16:21:56:134 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBUnmarshaller Unmarshaller created [not in pool] 
[1/20/17 16:21:56:152 EST] 000001aa DocLitWrapped 1 org.apache.axis2.jaxws.marshaller.impl.alt.DocLitWrappedMinimalMethodMarshaller demarshalResponse fail demarshalResponse e=org.apache.axiom.om.OMException: javax.xml.bind.JAXBException: preference.v1_0.filterheaderresponse.FilterHeaderResponse is not known to this context 
[1/20/17 16:21:56:156 EST] 000001aa ExceptionFact 1 org.apache.axis2.jaxws.ExceptionFactory logRootCause Root Cause:javax.xml.bind.JAXBException: preference.v1_0.filterheaderresponse.FilterHeaderResponse is not known to this context 

Wenn ich auf dem ganzen Stack-Trace aussehen, kann ich sehen, dass der Kontext auch alle Objekte aus der harten Karte abruft. Außerdem denkt es, dass es einen neuen JAXBContext erstellen muss, obwohl einer bereits für die Anfrage erstellt wurde, die gut funktionierte. Unten ist die Ablaufverfolgung von wann es den Kontext für die Anforderung erstellte, wo es die entsprechenden Pakete fand.

[1/20/17 16:21:51:959 EST] 000001aa JAXBUtils  3 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext new JAXBContext constructed, elapsed time msec: 1369 
[1/20/17 16:21:51:960 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext jaxbMap.put3, validPackagesKey[[preference.v1, preference.v1_0.commonheadertypes, preference.v1_0.filterheader, preference.v1_0.filterheaderresponse, preference.v1_0.getfilterheaderrequest, preference.v1_0.getpreferencesrequest, preference.v1_0.getpreferencesresponse, preference.v1_0.isaliveresponse, preference.v1_0.preference, preference.v1_0.setpreferencesrequest, preference.v1_0.setpreferencesresponse]] softRef2[[email protected]] 
[1/20/17 16:21:51:960 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext [created or retrieved from hard map] for [@preference.v1, @preference.v1_0.commonheadertypes, @preference.v1_0.filterheader, @preference.v1_0.filterheaderresponse, @preference.v1_0.getfilterheaderrequest, @preference.v1_0.getpreferencesrequest, @preference.v1_0.getpreferencesresponse, @preference.v1_0.isaliveresponse, @preference.v1_0.preference, @preference.v1_0.setpreferencesrequest, @preference.v1_0.setpreferencesresponse, [preference.v1.ObjectFactory], [preference.v1_0.commonheadertypes.ObjectFactory], [preference.v1_0.commonheadertypes.RequestHeader], [preference.v1_0.filterheader.ObjectFactory], [preference.v1_0.filterheaderresponse.FilterHeaderResponse], [preference.v1_0.filterheaderresponse.ObjectFactory], [preference.v1_0.getfilterheaderrequest.GetFilterHeaderRequest], [preference.v1_0.getfilterheaderrequest.ObjectFactory], [preference.v1_0.getpreferencesrequest.GetPreferencesRequest], [preference.v1_0.getpreferencesrequest.ObjectFactory], [preference.v1_0.getpreferencesresponse.GetPreferencesResponse], [preference.v1_0.getpreferencesresponse.ObjectFactory], [preference.v1_0.isaliveresponse.ObjectFactory], [preference.v1_0.isaliveresponse.Response], [preference.v1_0.preference.ObjectFactory], [preference.v1_0.setpreferencesrequest.ObjectFactory], [preference.v1_0.setpreferencesrequest.SetPreferencesRequest], [preference.v1_0.setpreferencesresponse.ObjectFactory], [preference.v1_0.setpreferencesresponse.SetPreferencesResponse], preference.v1, preference.v1.0.commonheadertypes, preference.v1.0.filterheader, preference.v1.0.filterheaderresponse, preference.v1.0.getfilterheaderrequest, preference.v1.0.getpreferencesrequest, preference.v1.0.getpreferencesresponse, preference.v1.0.isaliverequest, preference.v1.0.isaliveresponse, preference.v1.0.preference, preference.v1.0.setpreferencesrequest, preference.v1.0.setpreferencesresponse, preference.v1_0.commonheadertypes, preference.v1_0.commonheadertypes > preference.v1.0.commonheadertypes, preference.v1_0.filterheader, preference.v1_0.filterheaderresponse, preference.v1_0.getfilterheaderrequest, preference.v1_0.getfilterheaderrequest > preference.v1.0.getfilterheaderrequest, preference.v1_0.getpreferencesrequest, preference.v1_0.getpreferencesrequest > preference.v1.0.getpreferencesrequest, preference.v1_0.getpreferencesresponse, preference.v1_0.isaliveresponse, preference.v1_0.preference, preference.v1_0.setpreferencesrequest, preference.v1_0.setpreferencesrequest > preference.v1.0.setpreferencesrequest, preference.v1_0.setpreferencesresponse, preferences.v1] 
[1/20/17 16:21:51:961 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext also stored by the list of valid packages:[preference.v1, preference.v1_0.commonheadertypes, preference.v1_0.filterheader, preference.v1_0.filterheaderresponse, preference.v1_0.getfilterheaderrequest, preference.v1_0.getpreferencesrequest, preference.v1_0.getpreferencesresponse, preference.v1_0.isaliveresponse, preference.v1_0.preference, preference.v1_0.setpreferencesrequest, preference.v1_0.setpreferencesresponse] 
[1/20/17 16:21:51:961 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext constructionType= BY_CONTEXT_PATH 
[1/20/17 16:21:51:962 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContextValue = org.ap[email protected]231f9d4e 
[1/20/17 16:21:51:962 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContext = [email protected] 
[1/20/17 16:21:51:962 EST] 000001aa JAXBUtils  3 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext JAXBContextCreate: creation completed 
[1/20/17 16:21:51:963 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBMarshaller Marshaller created [not in pool] 
[1/20/17 16:21:52:037 EST] 000001aa ContextUtils 1 org.apache.axis2.jaxws.context.utils.ContextUtils _isJAXBRemoveIllegalChars isJAXBRemoveIllegalChars returns the default: false 
[1/20/17 16:21:52:037 EST] 000001aa ContextUtils 1 org.apache.axis2.jaxws.context.utils.ContextUtils getRelatedMessageContext Enter getRelatedMessageContext for:[MessageContext: logID=74ca574be105a3cab3233c4f8e1638f3fe4fbae7c632556e] 
[1/20/17 16:21:52:038 EST] 000001aa ContextUtils 1 org.apache.axis2.jaxws.context.utils.ContextUtils getRelatedMessageContext Exit getRelatedMessageContext related messageContext is[MessageContext: logID=64ca574be105a3cab3233c4f8e1638f3fe4fbae7c632556e] 
[1/20/17 16:21:52:038 EST] 000001aa ContextUtils 1 org.apache.axis2.jaxws.context.utils.ContextUtils _isJAXBRemoveIllegalChars isJAXBRemoveIllegalChars returns the default: false 
[1/20/17 16:21:52:069 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils releaseJAXBMarshaller Marshaller placed back into pool 
[1/20/17 16:21:52:069 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils releaseJAXBMarshaller Marshaller = [email protected] 
[1/20/17 16:21:52:070 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils releaseJAXBMarshaller JAXBContext = [email protected] 
[1/20/17 16:21:52:070 EST] 000001aa BlockImpl  1 org.apache.axis2.jaxws.message.impl.BlockImpl outputTo End outputTo 
[1/20/17 16:21:52:071 EST] 000001aa BlockImpl  1 org.apache.axis2.jaxws.message.impl.BlockImpl outputTo Start outputTo 
[1/20/17 16:21:52:071 EST] 000001aa BlockImpl  1 org.apache.axis2.jaxws.message.impl.BlockImpl outputTo Write business object 
[1/20/17 16:21:52:072 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext key[[@preference.v1, @preference.v1_0.commonheadertypes, @preference.v1_0.filterheader, @preference.v1_0.filterheaderresponse, @preference.v1_0.getfilterheaderrequest, @preference.v1_0.getpreferencesrequest, @preference.v1_0.getpreferencesresponse, @preference.v1_0.isaliveresponse, @preference.v1_0.preference, @preference.v1_0.setpreferencesrequest, @preference.v1_0.setpreferencesresponse, [preference.v1.ObjectFactory], [preference.v1_0.commonheadertypes.ObjectFactory], [preference.v1_0.commonheadertypes.RequestHeader], [preference.v1_0.filterheader.ObjectFactory], [preference.v1_0.filterheaderresponse.FilterHeaderResponse], [preference.v1_0.filterheaderresponse.ObjectFactory], [preference.v1_0.getfilterheaderrequest.GetFilterHeaderRequest], [preference.v1_0.getfilterheaderrequest.ObjectFactory], [preference.v1_0.getpreferencesrequest.GetPreferencesRequest], [preference.v1_0.getpreferencesrequest.ObjectFactory], [preference.v1_0.getpreferencesresponse.GetPreferencesResponse], [preference.v1_0.getpreferencesresponse.ObjectFactory], [preference.v1_0.isaliveresponse.ObjectFactory], [preference.v1_0.isaliveresponse.Response], [preference.v1_0.preference.ObjectFactory], [preference.v1_0.setpreferencesrequest.ObjectFactory], [preference.v1_0.setpreferencesrequest.SetPreferencesRequest], [preference.v1_0.setpreferencesresponse.ObjectFactory], [preference.v1_0.setpreferencesresponse.SetPreferencesResponse], preference.v1, preference.v1.0.commonheadertypes, preference.v1.0.filterheader, preference.v1.0.filterheaderresponse, preference.v1.0.getfilterheaderrequest, preference.v1.0.getpreferencesrequest, preference.v1.0.getpreferencesresponse, preference.v1.0.isaliverequest, preference.v1.0.isaliveresponse, preference.v1.0.preference, preference.v1.0.setpreferencesrequest, preference.v1.0.setpreferencesresponse, preference.v1_0.commonheadertypes, preference.v1_0.commonheadertypes > preference.v1.0.commonheadertypes, preference.v1_0.filterheader, preference.v1_0.filterheaderresponse, preference.v1_0.getfilterheaderrequest, preference.v1_0.getfilterheaderrequest > preference.v1.0.getfilterheaderrequest, preference.v1_0.getpreferencesrequest, preference.v1_0.getpreferencesrequest > preference.v1.0.getpreferencesrequest, preference.v1_0.getpreferencesresponse, preference.v1_0.isaliveresponse, preference.v1_0.preference, preference.v1_0.setpreferencesrequest, preference.v1_0.setpreferencesrequest > preference.v1.0.setpreferencesrequest, preference.v1_0.setpreferencesresponse, preferences.v1]] 
[1/20/17 16:21:52:072 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext Following packages are in this batch of getJAXBContext() : 
[1/20/17 16:21:52:073 EST] 000001aa JAXBUtils  1 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext @preference.v1 

Ich recherchierte ein wenig und fand, dass falsche JAXB Tagging das Problem sein kann, sind so unter die Klassen in dieser Transaktion verwendet wird. Lassen Sie mich wissen, ob ich andere Klassen hinzufügen muss.

Preference.java

@WebServiceClient(name = "Preference", targetNamespace = "http://someurl.com/preference/v1.0/", wsdlLocation = "/META-INF/wsdl/Preference.wsdl") 
public class Preference 
    extends Service 
{ 
@WebEndpoint(name = "PreferenceSoap") 
    public PreferenceSoap getPreferenceSoap() { 
     return super.getPort(new QName("http://someurl.com/preference/v1.0/", "PreferenceSoap"), PreferenceSoap.class); 
    } 
} 

PreferenceSoap.java

@WebService(name = "PreferenceSoap", targetNamespace = "http://someurl.com/preference/v1.0/") 
@XmlSeeAlso({ 
    preference.v1.ObjectFactory.class, 
    preference.v1_0.commonheadertypes.ObjectFactory.class, 
    preference.v1_0.filterheader.ObjectFactory.class, 
    preference.v1_0.filterheaderresponse.ObjectFactory.class, 
    preference.v1_0.getfilterheaderrequest.ObjectFactory.class, 
    preference.v1_0.getpreferencesrequest.ObjectFactory.class, 
    preference.v1_0.getpreferencesresponse.ObjectFactory.class, 
    preference.v1_0.isaliveresponse.ObjectFactory.class, 
    preference.v1_0.preference.ObjectFactory.class, 
    preference.v1_0.setpreferencesrequest.ObjectFactory.class, 
    preference.v1_0.setpreferencesresponse.ObjectFactory.class 
}) 
public interface PreferenceSoap { 
    /** 
    * 
    * @param getFilterHeaderRequest 
    * @return 
    *  returns preference.v1_0.filterheaderresponse.FilterHeaderResponse 
    */ 
    @WebMethod(operationName = "GetFilterHeaders", action = "http://someurl.com/preference/v1.0/GetFilterHeaders") 
    @WebResult(name = "GetFilterHeadersResult", targetNamespace = "http://someurl.com/preference/v1.0/") 
    @RequestWrapper(localName = "GetFilterHeaders", targetNamespace = "http://someurl.com/preference/v1.0/", className = "preference.v1.GetFilterHeaders") 
    @ResponseWrapper(localName = "GetFilterHeadersResponse", targetNamespace = "http://someurl.com/preference/v1.0/", className = "preference.v1.GetFilterHeadersResponse") 
    public FilterHeaderResponse getFilterHeaders(
     @WebParam(name = "RequestHeader", targetNamespace = "http://someurl.com/preferences/v1.0/", header = true) 
     RequestHeader requestHeader, 
     @WebParam(name = "getFilterHeaderRequest", targetNamespace = "http://someurl.com/preference/v1.0/") 
     GetFilterHeaderRequest getFilterHeaderRequest); 
} 

GetFilterHeadersResponse.java

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "getFilterHeadersResult" 
}) 
@XmlRootElement(name = "GetFilterHeadersResponse") 
public class GetFilterHeadersResponse { 

    @XmlElement(name = "GetFilterHeadersResult") 
    protected FilterHeaderResponse getFilterHeadersResult; 

    /** 
    * Gets the value of the getFilterHeadersResult property. 
    * 
    * @return 
    *  possible object is 
    *  {@link FilterHeaderResponse } 
    *  
    */ 
    public FilterHeaderResponse getGetFilterHeadersResult() { 
     return getFilterHeadersResult; 
    } 

    /** 
    * Sets the value of the getFilterHeadersResult property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link FilterHeaderResponse } 
    *  
    */ 
    public void setGetFilterHeadersResult(FilterHeaderResponse value) { 
     this.getFilterHeadersResult = value; 
    } 

} 

filterheaderresponse.ObjectFactory.java

Gibt es etwas, das ich in all dies bin fehlt? Wenn ich es lokal mit einem generischen IBM JAX-WS-Thin-Client ausführe, funktioniert es einwandfrei. Gibt es noch einige zusätzliche Konfigurationseinstellungen, die ich in WebSphere vornehmen muss, damit dies funktioniert? Warum sollte es auch in der Lage sein, einen angemessenen Kontext für die Anfrage, aber nicht für die Antwort zu konstruieren?

+1

Wenn wsimport ohne Warnungen ausgeführt wurde, Sie den generierten Code nicht geändert oder subclassiert haben und der generierte Code in der App gepackt wurde, wäre dies ein guter Kandidat für die IBM Unterstützung. –

+0

Danke. Ich bin noch relativ neu in Java (und speziell JAX-WS) Programmierung, also wollte ich sicherstellen, dass ich nichts falsch gemacht habe im Code, bevor ich es zu IBM brachte. Ich werde die Resolution veröffentlichen, sobald ich sie von ihnen bekomme, falls jemand anderes auf dasselbe Problem stoßen sollte. – lilweirdward

Antwort

0

Sind beide Server WURDE 8.5.5-Server? Vielleicht ist es ein Unterschied in den Jaxblibrary-Versionen? z.B. JAXB 2.1 vs 2.2?

+0

Dies ist ein guter Gedanke und IBM hat es auch vorgeschlagen, aber beide Server (lokaler Thin Client + vollständiger Entwicklerserver) sind auf Version 8.5.5, die auf 2.2 läuft, und der Code wurde mit 2.2 basierend auf den generierten Kommentaren im Paket generiert -Info-Klassen. – lilweirdward

Verwandte Themen