hi
ich hab einen WebService mit mehreren Methoden, die entweder Primitves oder Objekte zurückgeben. Die Methoden mit Primitives funktionieren:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<ns2:countAllBankResponse xmlns:ns2='http://impl.webservice.blzservice.zsys.ok.akdb.de/'>
<return>3993</return>
</ns2:countAllBankResponse>
</env:Body>
</env:Envelope>
die Methoden mit Objekt als Rückgabe funktionieren nich:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<ns2:findBankByBLZResponse xmlns:ns2='http://impl.webservice.blzservice.zsys.ok.akdb.de/'>
<return>
<bic>BYLADEM1EBE</bic>
<blz>70051805</blz>
<id>3032</id>
<nameKurz>Kr Spk Ebersberg</nameKurz>
<nameLang>Kreissparkasse Ebersberg</nameLang>
<ort>Ebersberg, Oberbay</ort>
<plz>85554</plz>
<pruefKz>00</pruefKz>
</return>
</ns2:findBankByBLZResponse>
</env:Body>
</env:Envelope>
die geworfene exception:
log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
3993
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement return
at org.apache.axis2.AxisFault.makeFault(AxisFault.jav a:430)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub.fromOM(BLZServiceWebServi ceServiceStub.java:12225)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub.findBankByBLZ(BLZServiceW ebServiceServiceStub.java:813)
at de.akdb.ok.zsys.blzservice.webservice.impl.Tesst.f indBankByBLZ(Tesst.java:55)
at de.akdb.ok.zsys.blzservice.webservice.impl.Tesst.m ain(Tesst.java:26)
Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement return
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$BankTO$Factory.parse(BLZS erviceWebServiceServiceStub.java:7528)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$FindBankByBLZResponse$Fac tory.parse(BLZServiceWebServiceServiceStub.java:79 85)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$FindBankByBLZResponseE$Fa ctory.parse(BLZServiceWebServiceServiceStub.java:4 928)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub.fromOM(BLZServiceWebServi ceServiceStub.java:12188)
... 3 more
Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement return
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$BankTO$Factory.parse(BLZS erviceWebServiceServiceStub.java:7512)
... 6 more
ich wollte zuerst jaxWS auch als Client hernehmen (weil das den server stellt)), aber da ist der rattenschwanz an zu verwendenden JARs zu groß geworden, daß ich einfach Axis2 genommen hab.
Leider hab ich im Netz kaum etwas über meine Fehlermeldung gefunden, außer (bei jemand anderen), daß es ein Service Problem is. Kann das jemand bestätigen ? Mich verwundert , daß beide Responses "return" als Ergebnis-Tag verwenden, aber abhängig davon, ob das Ergebnis ein Objekt ist, funktionieren.
PS:
hier noch mein Service:
package de.akdb.ok.zsys.blzservice.webservice.impl;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.interceptor.Interceptors;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import de.akdb.ok.zsys.blzservice.entity.Bank;
import de.akdb.ok.zsys.blzservice.entity.IBank;
import de.akdb.ok.zsys.blzservice.entity.to.BankTO;
import de.akdb.ok.zsys.blzservice.interceptors.LoggingInt erceptor;
import de.akdb.ok.zsys.blzservice.service.IBLZPruefer;
import de.akdb.ok.zsys.blzservice.service.IBLZPrueferLoca l;
/**
* @author OAW
*
*/
@Interceptors({LoggingInterceptor.class})
@TransactionAttribute(TransactionAttributeType.REQ UIRES_NEW)
@WebService
@Stateless
public class BLZServiceWebService {
@Resource
WebServiceContext wsCtx;
/**
* Service-Object
*/
@EJB
protected IBLZPrueferLocal bLZPruefer = null;
protected IBLZPruefer getBLZPruefer() {
return bLZPruefer;
}
/**
* delegated calls from service BLZPrueferWebService
*/
public Boolean check(String strBlz, String strKto, String strMethode) {
return getBLZPruefer().check(strBlz, strKto, strMethode);
}
public Long countAllBank() {
return bLZPruefer.countAllBank();
}
public void createBank(BankTO bank) {
bLZPruefer.createBank(bank.convert());
}
public void deleteBank(BankTO bank) {
bLZPruefer.deleteBank(bank.convert());
}
public BankTO findBankByBLZ(String blz) {
IBank b = bLZPruefer.findBankByBLZ(blz);
return new BankTO(b);
}
}
ich hab einen WebService mit mehreren Methoden, die entweder Primitves oder Objekte zurückgeben. Die Methoden mit Primitives funktionieren:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<ns2:countAllBankResponse xmlns:ns2='http://impl.webservice.blzservice.zsys.ok.akdb.de/'>
<return>3993</return>
</ns2:countAllBankResponse>
</env:Body>
</env:Envelope>
die Methoden mit Objekt als Rückgabe funktionieren nich:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<ns2:findBankByBLZResponse xmlns:ns2='http://impl.webservice.blzservice.zsys.ok.akdb.de/'>
<return>
<bic>BYLADEM1EBE</bic>
<blz>70051805</blz>
<id>3032</id>
<nameKurz>Kr Spk Ebersberg</nameKurz>
<nameLang>Kreissparkasse Ebersberg</nameLang>
<ort>Ebersberg, Oberbay</ort>
<plz>85554</plz>
<pruefKz>00</pruefKz>
</return>
</ns2:findBankByBLZResponse>
</env:Body>
</env:Envelope>
die geworfene exception:
log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
3993
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement return
at org.apache.axis2.AxisFault.makeFault(AxisFault.jav a:430)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub.fromOM(BLZServiceWebServi ceServiceStub.java:12225)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub.findBankByBLZ(BLZServiceW ebServiceServiceStub.java:813)
at de.akdb.ok.zsys.blzservice.webservice.impl.Tesst.f indBankByBLZ(Tesst.java:55)
at de.akdb.ok.zsys.blzservice.webservice.impl.Tesst.m ain(Tesst.java:26)
Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement return
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$BankTO$Factory.parse(BLZS erviceWebServiceServiceStub.java:7528)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$FindBankByBLZResponse$Fac tory.parse(BLZServiceWebServiceServiceStub.java:79 85)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$FindBankByBLZResponseE$Fa ctory.parse(BLZServiceWebServiceServiceStub.java:4 928)
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub.fromOM(BLZServiceWebServi ceServiceStub.java:12188)
... 3 more
Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement return
at de.akdb.ok.zsys.blzservice.webservice.impl.BLZServ iceWebServiceServiceStub$BankTO$Factory.parse(BLZS erviceWebServiceServiceStub.java:7512)
... 6 more
ich wollte zuerst jaxWS auch als Client hernehmen (weil das den server stellt)), aber da ist der rattenschwanz an zu verwendenden JARs zu groß geworden, daß ich einfach Axis2 genommen hab.
Leider hab ich im Netz kaum etwas über meine Fehlermeldung gefunden, außer (bei jemand anderen), daß es ein Service Problem is. Kann das jemand bestätigen ? Mich verwundert , daß beide Responses "return" als Ergebnis-Tag verwenden, aber abhängig davon, ob das Ergebnis ein Objekt ist, funktionieren.
PS:
hier noch mein Service:
package de.akdb.ok.zsys.blzservice.webservice.impl;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.interceptor.Interceptors;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import de.akdb.ok.zsys.blzservice.entity.Bank;
import de.akdb.ok.zsys.blzservice.entity.IBank;
import de.akdb.ok.zsys.blzservice.entity.to.BankTO;
import de.akdb.ok.zsys.blzservice.interceptors.LoggingInt erceptor;
import de.akdb.ok.zsys.blzservice.service.IBLZPruefer;
import de.akdb.ok.zsys.blzservice.service.IBLZPrueferLoca l;
/**
* @author OAW
*
*/
@Interceptors({LoggingInterceptor.class})
@TransactionAttribute(TransactionAttributeType.REQ UIRES_NEW)
@WebService
@Stateless
public class BLZServiceWebService {
@Resource
WebServiceContext wsCtx;
/**
* Service-Object
*/
@EJB
protected IBLZPrueferLocal bLZPruefer = null;
protected IBLZPruefer getBLZPruefer() {
return bLZPruefer;
}
/**
* delegated calls from service BLZPrueferWebService
*/
public Boolean check(String strBlz, String strKto, String strMethode) {
return getBLZPruefer().check(strBlz, strKto, strMethode);
}
public Long countAllBank() {
return bLZPruefer.countAllBank();
}
public void createBank(BankTO bank) {
bLZPruefer.createBank(bank.convert());
}
public void deleteBank(BankTO bank) {
bLZPruefer.deleteBank(bank.convert());
}
public BankTO findBankByBLZ(String blz) {
IBank b = bLZPruefer.findBankByBLZ(blz);
return new BankTO(b);
}
}