Avatar billede hossy Nybegynder
10. april 2008 - 10:05 Der er 49 kommentarer og
1 løsning

.net Webservice og java applet

Hej

Jeg er ved at lave en webservice i .NET, hvis metoder skal kunne tilgåes fra en java applet. Begge dele kører på samme server - en windows 2003 server, med IIS6.0 .
Jeg har søgt en del på nettet og oftests referes der til Axis frameworket og SOAP protokoller, men er det rigtigt forstået at dette(Axis) ikke kan installeres på en windows 2003 server?

Er der nogle der kan henvise til et sted hvor jeg kan finde information om dette eller er der nogen som kan smide lidt eksempelkode?

På forhånd tak
Avatar billede erikjacobsen Ekspert
10. april 2008 - 12:23 #1
Du anvender Axis klient del i din java applet og  du bruger .NETs webservice del på serveren. De skulle gerne kunne snakke sammen.
Avatar billede arne_v Ekspert
10. april 2008 - 13:54 #2
Axis kan godt bruges på Windows 2003.

Men du skal vel også kun bruge Axis til at generere en stub.

Alternativt kan du bruge den web service support der er indbygget i Java 1.6, hvis du kan
tillade dig at forudsætte nyeste Java.
Avatar billede hossy Nybegynder
10. april 2008 - 14:18 #3
Tak for begge svar! De bragte mig tættere på en løsning. Jeg er i øjeblikket igang med at læse Arne's artikel : http://www.eksperten.dk/artikler/159 så jeg vender lige tilbage med lidt kode stumper ...
Avatar billede hossy Nybegynder
10. april 2008 - 14:29 #4
Ok... her er den kode jeg bikser rundt med:

  public static void main(String [] args) {
       
      try {
        String endpoint =
            "http://localhost:3595/Webservice/Service.asmx";

        Service  service = new Service();
        Call    call    = (Call) service.createCall();
 
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName(new  QName("http://localhost:3595/Webservice","HelloWorld"));
 
        String ret = (String) call.invoke( new Object[] { } );
 
        System.out.println("Sent 'Hello!', got '" + ret + "'");
      } catch (Exception e) {
        System.err.println(e.toString());
      }
    }
  }

Til at starte med skal der blot kaldes en metode på webservicen, der hedder HelloWorld(), som ikke tager nogle argumenter. Jeg får dog denne fejl:

System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: .
  at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
  at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
  at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
  at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
  at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Min webservice kode ser således ud: (.NET)

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Configuration;
using System.Data.*;

[WebService(Namespace = "http://localhost/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    private string connectionString;
    private MySqlDataAdapter msda;

    public Service () {

        connectionString =                          WebConfigurationManager.ConnectionStrings["DataBase"].ConnectionString;
    }

    [WebMethod]
    public string HelloWorld() {
       
        return "Hello World";

    }
}

Connectionstring er til en mySql db, men ignorer dette indtil videre :)
Avatar billede erikjacobsen Ekspert
10. april 2008 - 14:43 #5
Skal du ikke kun bruge din namespace "http://localhost/" i din QName ...?
Avatar billede hossy Nybegynder
10. april 2008 - 14:54 #6
Ah jo... den havde jeg overset. Mange tak for hjælpen :)

Smider du lige et svar så du kan få lidt point
Avatar billede erikjacobsen Ekspert
10. april 2008 - 14:55 #7
Jeg samler slet ikke på point, tak.
Avatar billede hossy Nybegynder
10. april 2008 - 15:01 #8
Ok, men du skal i hvertfald have tak for hjælpen.
Avatar billede arne_v Ekspert
10. april 2008 - 15:24 #9
Hvorfor genererer du ikke en stub ? Det er normalt meget nemmere !
Avatar billede hossy Nybegynder
10. april 2008 - 15:51 #10
Hmm... jeg ved ikke hvad en stub er... det er første gang jeg kigger på det her:)
Avatar billede arne_v Ekspert
10. april 2008 - 16:14 #11
Ideen i en stub er at noget software (Axis i dit tilfaelde) genererer en Java klasse
udfra WSDL'en.

Din kode kalde saa bare den genererede klasse og den laver alle de der lidt mystiske
kald for en.

Hvis man kan bruge stub saa er det normalt det nemmeste.
Avatar billede hossy Nybegynder
14. april 2008 - 11:50 #12
Jeg er fortsat med at "håndkode" forbindelsen til webservicen og det lader til at fungere fint sålænge jeg kalder metoder der IKKE tager nogle argumenter, men der begynder at opstå fejl så snart den kaldte metode tager argumenter med. Her er et udsnit af java koden:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
 
  public class testClient {
   
    public static void main(String [] args) {
       
        try {
        String endpoint =
           
        "http://localhost:8080/SQLService.asmx";

        Service  service = new Service();
        Call    call    = (Call) service.createCall();
 
       
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName(new QName("http://localhost/","viewTable"));
       
        String ret = (String) call.invoke( new Object[] {"users"} );
         
        System.out.println("Sent 'Hello!', got '" + ret + "'");
      } catch (Exception e) {
        System.err.println(e.toString());
      }
    }
  }

Ideen er at kalde metoden viewTable der tager 1 String argument som er navnet på den tabel der skal vises. Resultatet smides så i en test-streng og vises på skærmen. Jeg får dog følgende SQL fejl:

Sent 'Hello!', got '  at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
  at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
  at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
  at System.Data.SqlClient.SqlDataReader.get_MetaData()
  at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
  at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
  at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
  at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
  at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
  at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
  at SQLService.viewTable(String table)'

Er der nogen som ved hvad denne fejl skyldes? Har kigget lidt rundt på nettet uden held
Avatar billede erikjacobsen Ekspert
14. april 2008 - 12:24 #13
SqlException?  Næppe noget med overførslen af parameteren, men mere noget i retning af fejl i din håndtering af værdien i SQL.

Og så må du ikke i den virkelige verden ukritisk tage en værdi fra brugeren, her et tabel-navn, og proppe den ind i en SQL-sætning. Alt input fra brugeren skal betragtes med største mistro. Hellere (fx) sende et tal med, fx 1 til 3, hvis du har 3 tabeller - så checker du at tallet er 1, 2 eller 3, og slår tabelnavnet op i din kode på servereb.
Avatar billede hossy Nybegynder
14. april 2008 - 13:07 #14
Min bruger er i det her tilfælde en java-applet, og det er denne som genererer de værdier der sendes med som argumenter til webservicen. Du har selvfølgelig en god pointe i at der bør være et check af om den værdi der sendes afsted overhovedet giver mening, og det vil jeg lige rette, men lige nu ligger hovedfokus på at få det til at snakke sammen :)

Min webservice ser således ud:

[WebMethod]
    public String viewTable(String table)
    {
        String result = "";

        try
        {
            String query = "SELECT * FROM " + table + ";";
            connection.Open();

            SqlCommand command = new SqlCommand(query, connection);
            SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);

            while (reader.Read())
            {
                if (input.Equals("users"))
                {
                    result += "{" + reader["userId"].ToString().Trim() + ", '";
                    result += reader["username"].ToString().Trim() + "', '";
                    result += reader["password"].ToString().Trim() + "'}  ;  ";
                }
                else if(input.Equals(.....))
                ....
            }
        }
        catch (SqlException e)
        {
            result = e.StackTrace.ToString();
        }

        return result;

    }

Der må være en fejl i denne linje et sted:

String query = "SELECT * FROM " + table + ";";

men jeg kan ikke lige se hvad det er
Avatar billede hossy Nybegynder
14. april 2008 - 13:24 #15
Der har vist indsneget sig en lille fejl, if-delen skulle se således ud:

while (reader.Read())
            {
                if (table.Equals("users"))
                {
                    result += "{" + reader["userId"].ToString().Trim() + ", '";
                    result += reader["username"].ToString().Trim() + "', '";
                    result += reader["password"].ToString().Trim() + "'}  ;  ";
                }
                else if(table.Equals(.....))
                ....
            }
Avatar billede erikjacobsen Ekspert
14. april 2008 - 13:39 #16
En
  result = e.Message;

vil give dig en mere præcis beskrivelse af problemet. Du kan evt til din stacktrace, hvis du synes.

"...en java-applet, og det er denne som genererer de værdier..." - det vil en hacker være ret ligeglad med. Det er data, der kommer udefra, derfor pr definition utroværdigt. Men den er selvfølgelig en anden snak indtil videre.
Avatar billede hossy Nybegynder
14. april 2008 - 22:45 #17
Ja det havde du da ret i. Der går noget galt med integer-værdien, når den sendes fra Java til C#.

Her er java-koden hvor integer værdien sendes:

String ret =  (String)call.invoke( new Object[] { 1 } );

Og her er den c# metode den sendes til: (der er ændret i håndtering af input, som du foreslog)

public String getUserInfo(int userId)
{
    String result = "";
   
    // 1. declare command object with parameter
    SqlCommand command = new SqlCommand("SELECT * FROM users WHERE userId= @uId ", connection);
    // 2. define parameters used in command object
    SqlParameter param  = new SqlParameter();
    param.ParameterName = "@uId";
    param.Value        = userId;
   
    result += userId;
    // 3. add new parameter to command object
    command.Parameters.Add(param);
     
    connection.Open();
     
    SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
   
    while (reader.Read())
    {
    result += "2";
        result += reader["username"].ToString().Trim();
    }
   
    result += "3";
    reader.Close();

      return result;
    }

De forskellige steder der lægges en værdi til result er blot til fejlfinding. Det resultat jeg får returneret til java er:
'03'

Hvilket betyder at det userId Java modtager er 0, og at while-metoden i Java-koden springes over. I databasen er der ikke nogen user med userId hvilket selvfølgelig forklarer hvorfor while-løkken springes over.

Spørgsmålet er bare hvorfor det er et 0 der modtages i C# og ikke 1, som der sendes fra Java.....?
Avatar billede erikjacobsen Ekspert
14. april 2008 - 22:54 #18
Det er derfor man laver stubs - for at undgå alt det bøvl.

Du har testet din getUserInfo helt uden om webservices, så du ved hvad den laver, ik'?
Avatar billede hossy Nybegynder
14. april 2008 - 23:03 #19
Ja og det hele virker også fint hvis jeg "hardcoder" en værdi til userId inde i getUserInfo metoden.
Avatar billede arne_v Ekspert
15. april 2008 - 04:26 #20
Stub !!!!!!!!!!!

------

Prøv evt.:

String ret =  (String)call.invoke( new Object[] { new Integer(1) } );
Avatar billede hossy Nybegynder
16. april 2008 - 12:34 #21
Hej Arne

Jeg har forsøgt med String ret =  (String)call.invoke( new Object[] { new Integer(1) } );

uden held, så ja.. jeg vil forsøge med stub. Jeg har læst din artikel, men er lidt forvirret. Hvordan generes .wdll og .wsdl filerne?

På forhånd tak for jeres hjælp :)
Avatar billede arne_v Ekspert
17. april 2008 - 04:01 #22
.wsdl skal kun bruges når du bruger Axis til at lave server med

.wsdl genererers automatisk af server (i dette tilfælde af .NET)

så du skal ikke bruge nogen af dem
Avatar billede arne_v Ekspert
17. april 2008 - 04:47 #23
Men jeg har fået et eksmepel til at virke nu.
Avatar billede arne_v Ekspert
17. april 2008 - 04:47 #24
Service:

<%@ WebService Language="C#" Class="E.SimpleTest" %>
using System;
using System.Web.Services;

namespace E
{
    [WebService(Namespace = "http://arne/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class SimpleTest : WebService
    {
        [WebMethod]
        public int AddOne(int v)
        {
            return v + 1;
        }
    }
}
Avatar billede arne_v Ekspert
17. april 2008 - 04:47 #25
C# client:

using System;

public class Test
{
    public static void Main(string[] args)
    {
        SimpleTest st = new SimpleTest();
        Console.WriteLine(st.AddOne(2));
    }
}
Avatar billede arne_v Ekspert
17. april 2008 - 04:48 #26
Java client med genereret stub:

import arne.*;

public class Test {
    public static void main(String[] args) throws Exception {
        SimpleTestLocator stl = new SimpleTestLocator();
        SimpleTestSoap sts = stl.getSimpleTestSoap();
        System.out.println(sts.addOne(2));
    }
}
Avatar billede arne_v Ekspert
17. april 2008 - 04:48 #27
Java client manuel kode:

import javax.xml.rpc.*;
import javax.xml.namespace.*;
import javax.xml.rpc.encoding.*;

public class TestManual {
    public static void main(String[] args) throws Exception {
        ServiceFactory sf = ServiceFactory.newInstance();
        Service s = sf.createService(new QName("http://arne/"));
        Call cal = s.createCall();
        cal.setTargetEndpointAddress("http://localhost:81/SimpleTest.asmx");
        cal.setOperationName(new QName("http://arne/", "AddOne"));
        cal.setProperty(Call.SOAPACTION_USE_PROPERTY, true);
        cal.setProperty(Call.SOAPACTION_URI_PROPERTY, "http://arne/AddOne");
        cal.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY , "literal");
        //cal.addParameter("v", XMLType.XSD_INT, Integer.class, ParameterMode.IN);
        ((org.apache.axis.client.Call)cal).addParameter(new QName("http://arne/", "v"), XMLType.XSD_INT, Integer.class, ParameterMode.IN);
        cal.setReturnType(XMLType.XSD_INT);
        System.out.println(cal.invoke(new Object[] { 2 } ));
    }
}
Avatar billede arne_v Ekspert
17. april 2008 - 04:49 #28
Problemet er at JAX RPC er en halv gammel standard. Og den understøtter ikke
document literal encoding specielt godt.

cal.addParameter("v", XMLType.XSD_INT, Integer.class, ParameterMode.IN);

virker ikke, men:

        ((org.apache.axis.client.Call)cal).addParameter(new QName("http://arne/", "v"), XMLType.XSD_INT, Integer.class, ParameterMode.IN);

får sat korrekt namespace på v og så virker det !
Avatar billede arne_v Ekspert
17. april 2008 - 04:50 #29
Og lad mig gentage:

STUBBBBBBBBBB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Avatar billede erikjacobsen Ekspert
17. april 2008 - 08:55 #30
"halv gammel standard" eller "halvgammel standard"?

Det er alt for længe siden jeg har haft fingre Axis, men jeg har lært at man skal maskinen gøre arbejdet, når den kan ;)  (vink: få den til at lave en stub for dig)
Avatar billede hossy Nybegynder
17. april 2008 - 13:04 #31
Ok, der er virklig blevet arbejdet i nat på det her :)

Efter at have læst dine svar, giver det efterhånden mere og mere mening det hele, heldigvis!

Jeg kunne nemt få dit eksempel med den håndkodede java client(manuel kode) til at virke, men eftersom det vist blevet nævnt en enkelt gang eller to i den her tråd, at stubs er vejen frem gav jeg mig selvfølgelig i kast med det bagefter.
Der opstår dog et dumt problem, idet jeg forsøger at lave min import sætning. I dit eksempel har du importeret webservicen's namespace, men af en eller andet årsag virker det ikke for mig. Eclipse brokker sig bare over at den ikke kan 'resolve' det. Jeg har forsøgt at angive hele stien til webservicen, men det var heller ikke lige løsningen.
Hvad har jeg overset?
Avatar billede arne_v Ekspert
17. april 2008 - 18:15 #32
halvgammel

:-)
Avatar billede arne_v Ekspert
17. april 2008 - 18:16 #33
Check den genererede kode og se om det namespace matcher med det du forsøger at
importere.
Avatar billede hossy Nybegynder
18. april 2008 - 10:55 #34
Min .wsdl:

<wsdl:definitions targetNamespace="http://subdom.mydomain.com/">

    <wsdl:types>

    <s:schema elementFormDefault="qualified" targetNamespace="http://subdom.mydomain.com/">

    <s:element name="helloWorld">
<s:complexType/>
</s:element>

    <s:element name="helloWorldResponse">

    <s:complexType>

    <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="helloWorldResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>

Min java client:

import subdom.*;

Virker stadigvæk ikke. Har også prøvet at angive subdom.mydomain.com (fiktivt til denne artikel) uden held.
Avatar billede arne_v Ekspert
18. april 2008 - 12:52 #35
Axis (eller Eclipse via Axis) genererer noget java kode.

Hvilken package ligger den genererede kode i ?
Avatar billede hossy Nybegynder
21. april 2008 - 16:53 #36
Hmm, får allerede problemer når stub'en skal genereres. Jeg benytter wsdl2java men får kun 2 filer genereret:
- en TestServiceCAllBackHandler.java
- TestServiceStub.java

hvor jeg burde få genereret en del flere...
Avatar billede arne_v Ekspert
22. april 2008 - 04:18 #37
Må vi se wsdl2java kommandoen ?

Jeg brugte:

    <path id="axis.classpath">
        <fileset dir="/Jakarta/Axis-1_4/lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    <taskdef resource="axis-tasks.properties" classpathref="axis.classpath"/>
    <target name="stubgen">
        <axis-wsdl2java output="." url="http://localhost/SimpleTest.asmx?WSDL"/>

    </target>
    <target name="testbuild" depends="stubgen">
        <javac classpathref="axis.classpath" srcdir="." destdir="."/>
    </target>
Avatar billede hossy Nybegynder
22. april 2008 - 08:02 #38
wsdl2java -uri http://annotator.projekts.eu/TestService.asmx?wsdl

var det jeg skrev, hvilket tilsyneladende nu giver mig:

Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException
: Error parsing WSDL
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat
ionEngine.java:150)
        at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
        at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID
_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
        at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.readInTheWSDLFile(
CodeGenerationEngine.java:286)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat
ionEngine.java:105)
        ... 2 more

Min wsdl fil er rimelig "stor" så jeg vil spare dig for at copy-paste den ind her, men kan selvfølgelig findes på ovennævnte url :)
Avatar billede hossy Nybegynder
22. april 2008 - 08:09 #39
Jeg har efterhånden forsøgt at installere diverse forskellige tools/frameworks: Ant/Axis/Axis2/CodeGen plugin for Eclipse etc., så kan nemt have fået rodet rundt i mine classpath settings eller andre installations settings
Avatar billede arne_v Ekspert
22. april 2008 - 13:07 #40
Kan du proeve med Axis 1.4 og ant udenfor Eclipse ?
Avatar billede hossy Nybegynder
23. april 2008 - 10:46 #41
Ah, men det var egentlig også det jeg mente. Har indtil videre sat addons til Eclipse på standby og forsøger mig via Axis 1.4, hvor jeg skrev
wsdl2java -uri http://annotator.projekts.eu/TestService.asmx?wsdl
Avatar billede arne_v Ekspert
24. april 2008 - 04:49 #42
URL ender med ?WSDL ikke med ?wsdl

mig bekendt er det kun Axis2 der kommer med en wsdl2java ikke Axis

så jeg forstår ikke hvad der sker
Avatar billede hossy Nybegynder
24. april 2008 - 15:43 #43
Ok, nu forsøgte jeg med din ovenstående build.xml fil, der ser således ud:

<?xml version="1.0"?>   
<path id="axis.classpath">
        <fileset dir="c:/programmer/Axis-1_4/lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    <taskdef resource="axis-tasks.properties" classpathref="axis.classpath"/>
    <target name="stubgen">
        <axis-wsdl2java output="." url="http://annotator.projekts.eu/TestService.asmx?WSDL"/>

    </target>
    <target name="testbuild" depends="stubgen">
        <javac classpathref="axis.classpath" srcdir="." destdir="."/>
    </target>

Den fejl jeg får ser sådan ud:
Buildfile: build.xml

BUILD FAILED
C:\Test\build.xml:2: Unexpected element "{}path" {antlib:org.apache.tools.ant}pa
th

Total time: 0 seconds
Avatar billede hossy Nybegynder
24. april 2008 - 15:44 #44
Og du havde ret i det med Axis2 og Wsdl2java. Det er i Axis2. Jeg havde rodet for meget rundt i de forskellige Axis versioner tilsyneladende...
Avatar billede arne_v Ekspert
26. april 2008 - 20:54 #45
Der skal et project omkring det.

Min kompletet build.xml er:

<project name="test" default="testrun">
    <path id="axis.classpath">
        <fileset dir="/Jakarta/Axis-1_4/lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    <taskdef resource="axis-tasks.properties" classpathref="axis.classpath"/>
    <target name="stubgen">
        <axis-wsdl2java output="." url="http://localhost/SimpleTest.asmx?WSDL"/>

    </target>
    <target name="testbuild" depends="stubgen">
        <javac classpathref="axis.classpath" srcdir="." destdir="."/>
    </target>
    <target name="testrun" depends="testbuild">
        <java fork="yes" classpathref="axis.classpath" classpath="." classname="Test"/>
    </target>
    <target name="testmanualrun" depends="testbuild">
        <java fork="yes" classpathref="axis.classpath" classpath="." classname="TestManual"/>
    </target>
</project>
Avatar billede hossy Nybegynder
28. april 2008 - 00:06 #46
hvad indeholder din Test og TestManual klasser?
Avatar billede arne_v Ekspert
28. april 2008 - 00:51 #47
17/04-2008 04:48:10 og 17/04-2008 04:48:36
Avatar billede hossy Nybegynder
29. april 2008 - 12:19 #48
Ok, det ser ud til jeg har fået det til at virke vha. wsimport.

Arne smider du lige et svar så du kan få nogle velfortjente points :)
Avatar billede arne_v Ekspert
29. april 2008 - 15:07 #49
OK
Avatar billede hossy Nybegynder
29. april 2008 - 23:08 #50
Og tusind tak for den tid du har smidt i det her ;)
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