Avatar billede kjole Nybegynder
22. marts 2007 - 19:47 Der er 15 kommentarer

Java axis problem

Nogen der kan hjælpe mig med hvad der fejler her?

Min deployment:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="Test" provider="java:RPC">
        <parameter name="className" value="test.Test"/>
        <parameter name="allowedMethods" value="*"/>
        <beanMapping qname="myNS:Container" xmlns:myNS="urn:BeanService" languageSpecificType="java:test.Container"/>
    </service>
</deployment>



Systemet:
Windows XP med Apache Tomcat 5.5.7 og Axis axis-1_2RC2

Fejlen:

Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
        {http://xml.apache.org/axis/}hostname:ibm-g07y1qpwynd

java.lang.NullPointerException
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:221)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:128)
        at org.apache.axis.encoding.DeserializationContext.endElement(Deserializ
ationContext.java:1083)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme
nt(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scan
EndElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l$FragmentContentDispatcher.dispatch(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
urce)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un
known Source)
        at javax.xml.parsers.SAXParser.parse(Unknown Source)
        at org.apache.axis.encoding.DeserializationContext.parse(Deserialization
Context.java:226)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
        at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnders
tandChecker.java:62)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:173)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2719)
        at org.apache.axis.client.Call.invoke(Call.java:2702)
        at org.apache.axis.client.Call.invoke(Call.java:2378)
        at org.apache.axis.client.Call.invoke(Call.java:2301)
        at org.apache.axis.client.Call.invoke(Call.java:1758)
        at testclient.TestSoapBindingStub.diller(TestSoapBindingStub.java:165)
        at testclient.TestClient.main(TestClient.java:15)
Avatar billede arne_v Ekspert
22. marts 2007 - 19:56 #1
virker en metode med simple data typer som argument ?
Avatar billede kjole Nybegynder
22. marts 2007 - 20:01 #2
Ja
Avatar billede kjole Nybegynder
22. marts 2007 - 20:02 #3
package test;

public class Test
{
    public String diller( Container order )
    {
        String sep = System.getProperty("line.separator");
       
        String response = "Yeah, " + order.getCustomerName() + "!" + sep;   
       
        String [] items = order.getItemCodes();
        int [] quantities = order.getQuantities();
       
        for (int i = 0; i < items.length; i++) {
            response += sep + quantities[i] + " of item : " + items[i];
        }
       
        return response;
    }
   
    public String test321()
    {
        return "Det virker..";
    }
}

Ingen fejl ved test321()
Avatar billede arne_v Ekspert
22. marts 2007 - 20:08 #4
saa ved vi jo at det er beanMapping vi skal kigge paa !

har du laest min artikel om Axis ?
Avatar billede kjole Nybegynder
22. marts 2007 - 20:09 #5
Nej, hvor kan man gøre dette?
Avatar billede arne_v Ekspert
22. marts 2007 - 20:14 #6
http://www.eksperten.dk/artikler/159

bruger jeg

        <typeMapping xmlns:ns="http://genpakke"                    qname="ns:Person"                    type="java:Person"                    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"                    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"                    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

du kunne jo proeve den !
Avatar billede kjole Nybegynder
22. marts 2007 - 20:17 #7
Har fundet det. Du må stadig gerne komme med indput hvis du kommer på noget der måske kan hjælpe mig, til at løse problemmet.
Avatar billede arne_v Ekspert
22. marts 2007 - 20:28 #8
proev og erstat

<beanMapping qname="myNS:Container" xmlns:myNS="urn:BeanService" languageSpecificType="java:test.Container"/>

med

        <typeMapping xmlns:ns="http://????"                    qname="ns:test.Container"                    type="java:test.Container"                    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"                    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"                    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

namespace maa du kunne se i WSDL
Avatar billede kjole Nybegynder
22. marts 2007 - 21:13 #9
Samme fejl:-(
Avatar billede kjole Nybegynder
23. marts 2007 - 12:12 #10
Nu har jeg prøvet mange ting, og der er kommet en ny fejl:

- No deserializer for java.lang.Object
- Exception:
org.xml.sax.SAXException: No deserializer for {urn:BeanService}Order........

Hvor Order.java er taget fra example5 i axis:

package ArrayClient;

/** This is a JavaBean which represents an order for some products.
*
* @author Glen Daniels (gdaniels@apache.org)
*/
public class Order
{
    /** Who's ordering  */
    private String customerName;
    /** Where do they live  */
    private String shippingAddress;
    /** Which items do we want */
    private String itemCodes[];
    /** And how many */
    private int quantities[];
   
    // Bean accessors
   
    public Order(String v)
    {
    customerName = v;
    }

    public String getCustomerName()
    { return customerName; }
    public void setCustomerName(String name)
    { customerName = name; }
   
    public String getShippingAddress()
    { return shippingAddress; }
    public void setShippingAddress(String address)
    { shippingAddress = address; }
   
    public String [] getItemCodes()
    { return itemCodes; }
    public void setItemCodes(String [] items)
    { itemCodes = items; }
   
    public int [] getQuantities()
    { return quantities; }
    public void setQuantities(int [] quants)
    { quantities = quants; }
}
Avatar billede kjole Nybegynder
23. marts 2007 - 12:13 #11
Fejlen kommer runtime
Avatar billede kjole Nybegynder
23. marts 2007 - 13:15 #12
Hej Arne..

Er der nogle tydlige fejl i denne:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="OrderServiceArray" provider="java:RPC">
        <parameter name="className" value="OrderServiceArray.OrderServiceArray"/>
        <parameter name="allowedMethods" value="processOrder"/>
   
    <typeMapping xmlns:ns="http://localhost:8080/axis/services/OrderServiceArray"
    qname="ns:Order"
    type="java:OrderServiceArray.Order[]"
        serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
        deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

    </service>
</deployment>


Jeg får denne fejl på runtime: org.xml.sax.SAXParseException: Premature end of file.
Avatar billede kjole Nybegynder
24. marts 2007 - 19:33 #13
Jeg har læst din artikel og har fået det delvist til at virke.
Serveren kører og virker men javaclienten fejler. Jeg kan godt få det til at virke ved at skrive clienten i C#, men jeg undres over jeg så får fejl i din uændrede javakode.

Skal namespacet i wsdd-filen ændres til noget andet end "http://genmappe"?

Fejlenbeskeden som kommer når programmet afvikles:

Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child e
lement, which is NOT expected, in something it was trying to deserialize.
faultActor:
faultNode:
faultDetail:
        {http://xml.apache.org/axis/}hostname:ibm-g07y1qpwynd

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which
is NOT expected, in something it was trying to deserialize.
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:221)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:128)
        at org.apache.axis.encoding.DeserializationContext.endElement(Deserializ
ationContext.java:1083)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme
nt(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scan
EndElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l$FragmentContentDispatcher.dispatch(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
urce)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un
known Source)
        at javax.xml.parsers.SAXParser.parse(Unknown Source)
        at org.apache.axis.encoding.DeserializationContext.parse(Deserialization
Context.java:226)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
        at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnders
tandChecker.java:62)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:173)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2719)
        at org.apache.axis.client.Call.invoke(Call.java:2702)
        at org.apache.axis.client.Call.invoke(Call.java:2378)
        at org.apache.axis.client.Call.invoke(Call.java:2301)
        at org.apache.axis.client.Call.invoke(Call.java:1758)
        at localhost.axis.services.SortService.SortServiceSoapBindingStub.sort(S
ortServiceSoapBindingStub.java:149)
        at TestSort.main(TestSort.java:26)
Avatar billede kjole Nybegynder
24. marts 2007 - 19:42 #14
Nej jeg havde ændre noget.. Jeg får fejl i linjen import genpakke.*; Som jeg har udkommenteret
Avatar billede kjole Nybegynder
24. marts 2007 - 19:45 #15
Problemmet er ikke løst, så har valgt at lave det på en anden måde. Tak for tiden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester