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?