Hello,
i found the problem. A Service on the server side has to use a holder.
1.) Implement a holder class:
===============
public final class DiplombereichHolder implements javax.xml.rpc.holders.Holder{
public Diplombereich value;
public DiplombereichHolder(){
}
public DiplombereichHolder(Diplombereich value){
this.value = value;
}
}
===============
(It should be possible to generate this implementation from a WSDL.)
2.) Change the signature of the methode on the service/server side from
public void add(Diplombereich diplomBereich)...
to
public void add(DiplombereichHolder diplomBereich)...
and it works!
Regards
Oliver Nautsch
Quoting Oliver Nautsch <[EMAIL PROTECTED]>:
> Hello,
>
> I want to create a service with a JavaBean as an INOUT-parameter but I get
> the
> following exception:
>
> ===============
> java.lang.IllegalArgumentException: Illegal argument passed to
> ParameterDesc.setJavaType. The java type
> org.dokustelle.model.work.Diplombereich does not match the mode inout
> ===============
>
> My WSDD-file is:
> ===============
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>
> <service name="PlaceService" provider="java:RPC">
> <parameter name="allowedMethods" value="*"/>
> <parameter name="className" value="org.dokustelle.services.PlaceService"/>
> </service>
>
> <service name="WorkService" provider="java:RPC">
> <parameter name="allowedMethods" value="*" />
> <parameter name="className" value="org.dokustelle.services.WorkService"
> />
> <parameter name="scope" value="request"/>
>
> <operation name="add" >
> <parameter name="diplombereich_1" mode="INOUT"/>
> </operation>
> </service>
>
> <beanMapping qname="DokuStelleNS:org.dokustelle.model.work.Diplombereich"
> xmlns:DokuStelleNS="urn:DokuStelleService"
> languageSpecificType="java:org.dokustelle.model.work.Diplombereich"/>
> <beanMapping qname="DokuStelleNS:org.dokustelle.model.work.Fachbereich"
> xmlns:DokuStelleNS="urn:DokuStelleService"
> languageSpecificType="java:org.dokustelle.model.work.Fachbereich"/>
> <beanMapping qname="DokuStelleNS:org.dokustelle.model.work.Arbeit"
> xmlns:DokuStelleNS="urn:DokuStelleService"
> languageSpecificType="java:org.dokustelle.model.work.Arbeit"/>
> <beanMapping qname="DokuStelleNS:org.dokustelle.model.work.Diplomarbeit"
> xmlns:DokuStelleNS="urn:DokuStelleService"
> languageSpecificType="java:org.dokustelle.model.work.Diplomarbeit"/>
>
> </deployment>
> ===============
>
> The implementation on the client side:
> ===============
> ...
> public void add(Diplombereich diplomBereich){
> Call call = axisConfig.getCall();
> call.setOperationName(new QName(serviceName, "add"));
>
> try {
>
> String param1_Name = "diplombereich_1";
>
> call.addParameter(param1_Name, buildQName(Diplombereich.class),
> ParameterMode.INOUT );
> call.setReturnType(XMLType.AXIS_VOID);
> call.invoke(new Object[]{diplomBereich});
>
> Map ouputParams = call.getOutputParams();
> ...
> ===============
>
> What is wrong?
> Any information will be helpful,
>
> Thanks
> Oliver Nautsch
>
>
>