webForumDet fria alternativet

problem att få igång axis

10 svar · 292 visningar · startad av Mc Fetto

Mc FettoMedlem sedan nov. 20021 920 inlägg
#1

Som vanligt när jag ska få något med J2EE att fungera så skiter det sig...
tog hem denna fil till axis: Version 1.1 Sources - zip

zipade up, lade axis i: C:\jwsdp-1.3\webapps\ROOT

lade lib-filerna i C:\jwsdp-1.3\common\lib
nu får jag http://localhost:8080/axis/happyaxis.jsp att fungera men saknar mappar till servlets etc för att kolla tjänster som är instalerade.

Någon som har koll på vart det gått fel?

Mc FettoMedlem sedan nov. 20021 920 inlägg
#2

Tog hem en anna version av axis och gjorde samma sak som ovan så fungerade det!

Mc FettoMedlem sedan nov. 20021 920 inlägg
#3

Fungerar finfint att köra igång axis men när jag vill kompilera en javaklient som ska testa en web serivce så får jag följande fel:

 org.apache.axis.client inte finns

Detta då jag importerar denna, problemet är ju att jag hittar inte mappen! Vad göra?

Aleph_OneMedlem sedan juni 2003370 inlägg
#4

org.apache.axis.client finns i jarfilen axis-1_1/lib/axis.jar som följer med när du tankar hem axispaketet. Se till att ha med den jarfilen i classpathen så ska det lösa sig.

Mc FettoMedlem sedan nov. 20021 920 inlägg
#5

hm, antar att det inte spelar ngn roll vart jag har lagt jarfilen, men jag har classpathen satt dit den ligger! :(

Mc FettoMedlem sedan nov. 20021 920 inlägg
#6

Nevermind... hade ju just missat, axis.jar, men hade med alla andra i mappen :)
Tack för hjälpen!! (snart kan jag ta en titt på din ws) :D

Mc FettoMedlem sedan nov. 20021 920 inlägg
#7

Får följande felmedelande när jag kompilerat en fil (utan felmedelanden)

C:\axis\samples\userguide\example1>java samples.userguide.example1.TestClient
Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ranges/Do
cumentRange
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at org.apache.xerces.util.ObjectFactory.findProviderClass(ObjectFactory.
java:342)
        at org.apache.xerces.parsers.AbstractDOMParser.setDocumentClassName(Abst
ractDOMParser.java:364)
        at org.apache.xerces.parsers.AbstractDOMParser.reset(AbstractDOMParser.j
ava:429)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:151)
        at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:253)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.
java:206)
        at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:322)
        at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:335)
        at org.apache.axis.configuration.FileProvider.configureEngine(FileProvid
er.java:209)
        at org.apache.axis.AxisEngine.init(AxisEngine.java:186)
        at org.apache.axis.AxisEngine.<init>(AxisEngine.java:171)
        at org.apache.axis.client.AxisClient.<init>(AxisClient.java:88)
        at org.apache.axis.client.Service.getAxisClient(Service.java:140)
        at org.apache.axis.client.Service.<init>(Service.java:149)
        at samples.userguide.example1.TestClient.main(TestClient.java:70)

C:\axis\samples\userguide\example1>

på rad 70 i testprogrammet:

Service  service = new Service();

Hela testfilen.. (tagen ifrån axis samples):

package samples.userguide.example1;

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://nagoya.apache.org:5049/axis/services/echo";
     
           Service  service = new Service();
           Call     call    = (Call) service.createCall();

           call.setTargetEndpointAddress( new java.net.URL(endpoint) );
           call.setOperationName(new QName("http://soapinterop.org/", "echoString") );

           // Call to addParameter/setReturnType as described in user-guide.html
           //call.addParameter("testParam",
           //                  org.apache.axis.Constants.XSD_STRING,
           //                  javax.xml.rpc.ParameterMode.IN);
           //call.setReturnType(org.apache.axis.Constants.XSD_STRING);

           String ret = (String) call.invoke( new Object[] { "Hello!" } );

           System.out.println("Sent 'Hello!', got '" + ret + "'");
       } catch (Exception e) {
           System.err.println(e.toString());
       }
   }
}

Vad är det som blir fel?

Mc FettoMedlem sedan nov. 20021 920 inlägg
#8

Hm, ett par missade *.jar-filer i classpathen! Fungerar fint nu!

Mc FettoMedlem sedan nov. 20021 920 inlägg
#9

Hm ett annat problem jag stött på nu är att jag skapar ett interface, sedan har jag en klass som implementerar denna. Denna klass anänder sig även av andra klasser för att utföra databearbetning. Problemet är när jag har skapat alla stubs etc. deployat mm. Så är det endast de metoder som inte använder sig av mer än den klass som implementerar interfacet. Då jag använder mig av metoder med andra klasser inblandade så fungerar det inte.

Måste man säga till axis på något sätt att där ligger bakomliggande klasser med? Jag har ju tagit med dem i min *.jar fil och tycker detta borde räcka!?

Mc FettoMedlem sedan nov. 20021 920 inlägg
#10

Fortsätter i denna tråd, då det är i stort samma problem.

har följande klasser: DbConnector, LakersImpl, Lakers

Lakers är ett interface, LakersImpl, implementerar interfacet och använder DbConnectorn för att få fram data ur databas.

Jag skapar stubar etc. med hjälp av axis, lägger klassfilerna i en jar fil som läggs i lib-katalogen i axis.

Så, när jag sedan deployat och använder LakersImpl fungerar allt bra tills det kommer ner till att hämta data ur databasen (fungerar finfint innan man skapar en web services av den).

kommer lite kod:

package lakers;
import java.sql.*;

public class DbConnector
{
	private Connection con;
	private String sql;
	private String connectionString;
	private String driver;
	private Statement stmt;
	
	public DbConnector()
	{
	}

	public DbConnector(String driver, String url, String database, String user, String password)
	{
		try
		{
			Class.forName(driver);
			connectionString = "jdbc:mysql://" +url + "/" + database +"?user=" + user + "&password=" + password;                             

		}
		catch (ClassNotFoundException e)
		{
			e.printStackTrace();
		}
	}
	
	public String getDbTestString()
	{
		return "from db klass";
	}

	public String getSqlStatement() 
	{
		return sql;
	}
	
	public void setSqlStatement(String str)
	{
		sql = str;
	}
	
	private void open()
	{
		try
		{
			con = DriverManager.getConnection(connectionString);
			stmt = con.createStatement();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
		
	public ResultSet getResultSet() 
	{
		ResultSet result = null;
		try
		{
			open();
			result = stmt.executeQuery(sql);
			con.close();			
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		
		}
		return result;		
	}
	
	public void executeNonQuery()
	{
		open();
		try
		{
			stmt.executeUpdate(sql);
			con.close();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
}
package lakers;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class LakersImpl
{
	private String connectionString;
	private DbConnector db;
	private ResultSet result;
	
	public LakersImpl() 
	{ 		 
		db = new DbConnector("com.mysql.jdbc.Driver", "192.168.0.102", "lakers", "root", "");
	}
	
	public void setConnector(String str)
	{
		db = new DbConnector("com.mysql.jdbc.Driver", "192.168.0.102", "lakers", "root", "");
	}

	public String getTestString()
	{
		return "muhaaaaa";
	}

	public String getDbTestString()
	{
		return db.getDbTestString();
		
	}

	public String[] getTitles()
	{
	try 
	{
			String[] titles = new String[10]; 
			
			// use SQL query to obtain book titles from database
			db.setSqlStatement("SELECT * FROM news;");
			result = db.getResultSet();
			 // use ResultSet to create book-title list
			 if ( result != null ) 
			 {

				// instantiate book-title list according to number
				// of titles stored in ResultSet
				List list = new ArrayList();
			
				while (result.next())
					list.add( result.getObject( "Title" ) );
				
				titles = ( String[] ) list.toArray( new String[ 0 ] );
			 }
			 else 
				titles[0] = "weei";
			  return titles;
		  }

		  // handle exception in executing Statement
		  catch ( Exception sqlException ) 
		  {
			 sqlException.printStackTrace();
			 return null;
		  }

	   } 
}

och ett litet test prog som implementerar srevicen:

import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

public class LakersTestMain {
    
    /** Creates a new instance of LakersTestMain */
    public LakersTestMain() {
    }
	
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws ServiceException, RemoteException {
        
		lakers.LakersService lakersService = new lakers.LakersServiceLocator();
        //String s = wsLakers.getString();
        //System.out.println(s);
        
        
		// Now use the service to get a stub to the service
		lakers.Lakers lakers = lakersService.getlakers();
		
        //set location to where data is to be collected
		//lakers.setConnector("192.168.0.102");
        String str = lakers.getDbTestString();
		System.out.println(str);
		
		String[] s = new String[10];
		s = lakers.getTitles();
		//s1 = wsLakers.getTestArray();

			for (int i= 0; i<= s.length; i++)
				System.out.println(s[i]);        
    }
    
}

Som sagt, denna kod fungerar innan man gör den till en web services... några förslag, ideér på vad som kan lösa problemet?

Mc FettoMedlem sedan nov. 20021 920 inlägg
#11

Mycket kod inlägg för litet fel...
Var tydligen tvungen att lägga in "mysql-connector-java-3.0.9-stable-bin.jar" i axis/web-inf/lib/ katalogen, fast jag har den i min classpath, antog att det inte behövdes men så var uppenbarligen inte fallet!

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb