Avatar billede herman01753 Nybegynder
04. april 2004 - 11:45 Der er 9 kommentarer og
1 løsning

JDBC og AXIS webservice

Jeg har lavet et java program som henter noget data fra en lokal Access database. Jeg har lavet et odbc link, og har efterfølgende implementeret en databasen handler til at hente og skrive data til databasen.

Hvis jeg laver et test java program, og henter data fra databasen, går det fint, men hvis jeg deployer mine java filer på min apache tomcat 5.019 application server, så får jeg ikke åbnet min database. jeg kan nemlig se at der bliver returneret null for min søgning, hvilket resulterer i at jeg får returneret min initieringsværdi, og ikke den værdi der står i databasen.

er der nogen der har haft lignende problemer, og kender løsningen på det?
Avatar billede arne_v Ekspert
04. april 2004 - 11:50 #1
Vi skal have lidt mere at arbejde med.

En exception tekst ville hjælpe meget.
Avatar billede herman01753 Nybegynder
04. april 2004 - 11:57 #2
jeg har ikke nogen exception tekst. vil du ha noget kode? jeg ved ikke hvor exceptions bliver skrevet ud i tomcat, men kunne se jeg fik samme resultat, hvis jeg ikke havde noget ODBC link, når jeg kørte mit java program.
deraf konkluderede jeg at det nok var forbindelsen der returnerer null.
Avatar billede herman01753 Nybegynder
04. april 2004 - 12:00 #3
webservice:
******************************************************
package SDWebService;import java.sql.*;
public class getdata {
   
    private DBHandler Database = new DBHandler();
    private ResultSet rs = null;
    public getdata(){}
    public int[] getIDs()
    {
        int[] temp = new int[1];
        temp[0]=0;
        Database.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:TRSS");
        //Database.select("SELECT distinct Channel_id from Reading where Date_time > DateAdd('s',-30,Date())");
        rs = Database.select("SELECT distinct Channel_id from Channel");
        if (rs != null)
        {
            int counter=0;
            try
            {
                if(rs.last())
                {
                    counter = rs.getRow();
                }
            }
            catch(SQLException e)
            {
                e.printStackTrace(System.out);
            }
           
            temp = new int[counter];
            try
            {
                if (rs.first())
                {
                    for (int i=0;i<counter;i++)
                    {
                        temp[i] = rs.getInt("Channel_id");
                        rs.next();    
                    }
                }
            }catch(SQLException e )
            {
                e.printStackTrace(System.out);
            }
       
            Database.close();
           
        }
        rs = null;
        return temp;
    }
   

   
}
******************************************


Database handler:
*************************************************

package SDWebService;

import java.sql.*;
public class DBHandler extends Object{
   
    private Connection con = null;
    private Statement stat = null;
    private ResultSet rs = null;
               
    public DBHandler(){}
   
    public boolean open(String dbDriverName, String dbClassName)
    {           
        try
        {
            if(this.con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName);
            }
        }
        catch (SQLException e)
        {
            return false;
        }
        catch (ClassNotFoundException e)
        {
            return false;
        }
        catch (InstantiationException e)
        {
            return false;
        }
        catch (IllegalAccessException e)
        {
            return false;
        }
        return true;
    }
    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {       
            }
        }
    }
    public boolean insert(String sql)
    {
        if(con!=null)
        {
            try
            {
                stat = con.createStatement();
                stat.executeUpdate(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
                return false;
            }
        }
        return true;
    }
    public ResultSet select(String sql)
    {
        if(con!=null)
        {
            try
            {
                stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                            ResultSet.CONCUR_UPDATABLE);
                rs = stat.executeQuery(sql);
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return rs;
    }
   
   
}
Avatar billede herman01753 Nybegynder
04. april 2004 - 12:03 #4
min wsdd fil som jeg bruger til at deploye med ser således ud:

*******************

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<service name="getdata" provider="java:RPC">
    <parameter name="className" value="SDWebService.getdata"/>
    <parameter name="allowedMethods" value="*"/>
</service>
</deployment>
Avatar billede herman01753 Nybegynder
04. april 2004 - 12:05 #5
Mit ODBC link ligger pt både som user og som system ODBC og hedder naturligvis TRSS
Avatar billede arne_v Ekspert
04. april 2004 - 12:13 #6
Vi skal have fundet den exception - ellers er det som at lede efter en nål
i en høstak.

e.printStackTrace();

i *alle* catch.

Og kør Tomcat i et console vindue, så bør de blive skrevet ud.
Avatar billede herman01753 Nybegynder
04. april 2004 - 12:13 #7
jeg har også forsøgt at lava funktionen til en dummy funktone, som returnerer et fast array af integers, og det gik fint. det betyder altså at det ikke er der der fejlse.
Avatar billede arne_v Ekspert
04. april 2004 - 12:17 #8
Jeg er ikke i tvivl om at det er database interaktionen som driller. Resten
kan næsten ikke gå galt.
Avatar billede herman01753 Nybegynder
04. april 2004 - 12:46 #9
jeg har lige sendt mine filer og min database til en skolekammerat, og der virker det helt perfekt. jeg fik iøvrigt ikke nogle exceptions. min opsætning må bare være forkert.
Avatar billede herman01753 Nybegynder
18. maj 2004 - 13:44 #10
lukker
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