Avatar billede drevi Nybegynder
08. oktober 2003 - 11:57 Der er 47 kommentarer og
1 løsning

Datasource til Paradoxs/InterBase

min datascource ser således ud det er en jeg selv har bikses sammen:

<datasources>
  <local-tx-datasource>
    <jndi-name>Kundedb</jndi-name>
    <!-- format of URL is "jdbc:odbc:kunder" -->
    <connection-url>jdbc:odbc:kunder</connection-url>
    <driver-class>sun.jdbc.odbc.JdbcOdbcDriver</driver-class>
    <user-name>gr9</user-name>
    <password>gr9</password>
  </local-tx-datasource>

</datasources>

Følgene fejl i JBoss:

Depends On Me: org.jboss.deployment.DeploymentException: Error while fixing tab
le name; - nested throwable: (org.jboss.util.NestedSQLException: Could not creat
e connection; - nested throwable: (java.sql.SQLException: [Microsoft][ODBC Drive
r Manager] Data source name not found and no default driver specified); - nested
throwable: (org.jboss.resource.JBossResourceException: Could not create connect
ion; - nested throwable: (java.sql.SQLException: [Microsoft][ODBC Driver Manager
] Data source name not found and no default driver specified)))]
11:31:02,849 INFO  [MainDeployer] Undeploying file:/C:/j2eesdk1.4_beta2/jboss-3.
2.1/server/default/deploy/Diplas_Kunde.jar
11:31:02,849 INFO  [EjbModule] Stopping

jeg har selvfølgelig installeret DBE, og sat min ODBC ref. det hele virker også hvis jeg connecter med en applikation lokalt altså direkte kald fra java?
Avatar billede arne_v Ekspert
08. oktober 2003 - 23:01 #1
"Data source name not found and no default driver specified" betyder
på almindelig dansk "Jeg kan ikke finde DSN'en".

Så dobbel-check den.

Generelt er SUN JDBC-ODBC bridge ikke særligt god.

Den virker til simple ting. Men en JBoss data source er
nok ikke lige "simpelt".

Hvis du kan finde en anden JDBC driver, så brug den.
Avatar billede arne_v Ekspert
08. oktober 2003 - 23:07 #2
interbase:
  borland har en JDBC driver (interclient) som kan hentes her http://www.ibphoenix.com/a433.htm#InterClient
  firebird JDBC driver kan downloades http://firebird.sourceforge.net/index.php?op=files&id=jcajdbc
Avatar billede arne_v Ekspert
08. oktober 2003 - 23:14 #3
Der skulle også være en JDBC driver til Paradox kaldet pdxJDBC, men
den synes ikke lige til at finde på nettet ...
Avatar billede drevi Nybegynder
09. oktober 2003 - 00:20 #4
hmm navnene er jeg sikker på passer det var også min første tanke.
men det vil sige, at den driver der følger med datacenter som jeg, forhåbenlig, bruger lige nu ikke virker(jeg kan selvfølgelig ikke huske hvor jeg fandt det eks. jeg har arbejdet ud fra lige nu, prøver lige finde et link imorgen).
men jeg giver da lige den der JDBC-ODBC driver en chance
Avatar billede arne_v Ekspert
09. oktober 2003 - 08:02 #5
Jeg har også brugt den til lidt test.

Jeg ville aldrig bruge den til production sammen med JBoss.
Avatar billede drevi Nybegynder
10. oktober 2003 - 00:43 #6
Nu skriver du både firebird og interbase er det den samme database eller er de bare begge udviklet af Borland, min paradoxs er en ver. 5.0 så vidt jeg kan se giver det nogle problemmer med JDBC driveren?
Avatar billede arne_v Ekspert
10. oktober 2003 - 07:42 #7
Borland releasese source koden til Interbase. Og den bliver nu
videreudviklet som open source projekt under navnet Firebird.

Ja Paradoc JDBC er vistnok til version 9 !
Avatar billede drevi Nybegynder
15. oktober 2003 - 11:33 #8
hmm Arne du ligger ikke inde med et eks på en datasource til den JDBC driver jeg har prøvet den her XXX-ds.xml:

<datasources>
  <local-tx-datasource>
    <jndi-name>Kundedb</jndi-name>
    <connection-url>jdbc:interbase://localhost/C:/ADMWIN/FIRM9999/DEBITOR.db</connection-url>
    <driver-class>interbase.interclient.Driver</driver-class>
    <user-name>gr9</user-name>
    <password>gr9</password>
  </local-tx-datasource>
</datasources>

den gav den her fejl i JBoss:
11:25:26,391 ERROR [EntityContainer] Starting failed
org.jboss.deployment.DeploymentException: Error while fixing table name; - neste
d throwable: (org.jboss.util.NestedSQLException: Failed to register driver for:
interbase.interclient.Driver; - nested throwable: (java.lang.ClassNotFoundExcept
ion: interbase.interclient.Driver); - nested throwable: (org.jboss.resource.JBos
sResourceException: Failed to register driver for: interbase.interclient.Driver;
- nested throwable: (java.lang.ClassNotFoundException: interbase.interclient.Driver)))

jeg kan regne ud det er fordi den ikke finder driveren, men jeg har smidt de jar filer ind i JBoss der følger med, så hvad gør jeg forkert?
Avatar billede arne_v Ekspert
15. oktober 2003 - 11:54 #9
Check om den klasse faktisk er i jar-filen !
Avatar billede drevi Nybegynder
15. oktober 2003 - 12:04 #10
Klassen er der, og stien er rigtigt nok:

C:\j2eesdk1.4_beta2\jboss-3.2.1\lib\interclient.jar#interbase\interclient\Driver.class
Avatar billede drevi Nybegynder
15. oktober 2003 - 13:12 #11
Kan det have noget at gøre med der er mellemrum i den system variablen den installere til jar'en??
Avatar billede arne_v Ekspert
15. oktober 2003 - 13:28 #12
Du har checket jar filen med jar tvf ?
Avatar billede drevi Nybegynder
15. oktober 2003 - 13:39 #13
nej ??
Avatar billede drevi Nybegynder
15. oktober 2003 - 13:55 #14
hvad gør jar tvf og hvordan bruger jeg det?
Avatar billede arne_v Ekspert
15. oktober 2003 - 14:08 #15
command line:

jar tvf foobar.jar

lister indhold af jar-fil.
Avatar billede drevi Nybegynder
15. oktober 2003 - 14:09 #16
Ok, jeg åbner normalt bare dem med winzip eller winace, det giver også indholdet
Avatar billede drevi Nybegynder
15. oktober 2003 - 18:29 #17
hmm jeg sidder overvejer at lave denne ene bønne om til BMP istedet for CMP, for på den måde at komme uden om Datascource problemmet, da jeg så kan styre datascourcen fra bønnen, spørgsmålet er bare om det vil være nemmer, det skal lige siges at den tabel denne bønne representere er read only, jeg skal kun hente Pk og en String op. Så har jeg læst lidt rundt om at paradoc er delphi og ikke Interbase ? eller misforstår jeg, hvis det er delphi så køre jeg jo også med en forkert jdbc/odbc driver?
Avatar billede arne_v Ekspert
15. oktober 2003 - 18:41 #18
Du skal også bruge datasource med BMP. Hvis du laver en connection fra
hver bønne, så vil performance gå i brædderne.

Paradox og Interbase er to forskellige ting med forskellige drivere.
Jævnfør mine 8/10 kommentarer.

Men problemet er at du ikke kan loade en driver. Med stor sandsynelighed
vil det være samme problem med en anden driver.
Avatar billede arne_v Ekspert
15. oktober 2003 - 18:43 #19
Jeg forstår heller ikke helt den her:
C:\j2eesdk1.4_beta2\jboss-3.2.1\lib\interclient.jar#interbase\interclient\Driver.class

Driveren skal vel ligge i server\default\lib og ikke lib ?

Hvad betyder # tegnet ?

Hvofor er der \ og ikke / i klasse navnet ?
Avatar billede drevi Nybegynder
15. oktober 2003 - 19:08 #20
# tegnet er fordi jeg har copy'et stien fra winace det fortæller mig at resten af stien er den pakkede del det er også den der benytter \ istedet for /.  Om driveren ligger forkert skal jeg lige teste imorgen..
jeg ønsker ikke at alle mine bønner skal have BMP men kun denne ene og ja jeg ved det er en tand ned af stigen i performance.

Hvis interbase driveren ikke virker til paradoc(ver. 5.0) hvor finder jeg så en der gør?? du skrev tidliger at der var en, men at den ikke var tilgængelig på nette er det et købe produkt only eller eksister den bare ikke mere??
Avatar billede arne_v Ekspert
15. oktober 2003 - 19:14 #21
Jeg tror den kommer med Paradox version 9.

Og du bruger version 5. Så msåke virker den ikke engang.

Så er der ODBC og JDBC-ODBC bridge tilbage.

Og den fra SUN er ikke speciel god.
Avatar billede arne_v Ekspert
15. oktober 2003 - 19:15 #22
Nu siger du readonly. Hvor tit skal den opdateres ?

Var det en mulighed at lave en kopi i et andet format (MySQL, MS SQLServer
eller lign.) og så opdatere den kopi hver nat eller en gang i timen ?
Avatar billede drevi Nybegynder
15. oktober 2003 - 19:20 #23
det bliver ikke nødvendigt at opdatere andet end når der sker noget i DB'en da firmaet ikke får tit nye kunder men det hænder, problemmet er når der kommer nye poster i tabelen skal vi bruge dem med det samme så at vente f.eks. ½ time på de kommer ind i vores system er ikke så heldig, kan man måske lave noget der holder øje med tilføjelser det skal lige siges at vi ingen rettigheder har i det program der oprindeligt styre paradoc's DB'en
Avatar billede arne_v Ekspert
15. oktober 2003 - 19:53 #24
Jeg kan følgende muligheder:

1) Du prøver om JDBC ODBC bridgen kan klare opgaven.

2) Du laver noget kode som kører hvert 5. eller 3. minut
  og opdaterer en anden database (JBoss har en scheduler indbygget)
Avatar billede arne_v Ekspert
15. oktober 2003 - 19:55 #25
Hvis den paradox database indeholder et time stamp så kan man jo lave
en SELECT MAX(tidsfelt) på den anden database og en SELECET WHERE tidsfelt >
mod paradox.

Det brug burde JDBC ODBC bridge sagtens kunne klare.
Avatar billede drevi Nybegynder
15. oktober 2003 - 20:01 #26
ok det er din løsning 1# jeg havde tænkt mig at teste imorgen men 2# lyder mere spændende.

du mener at jeg laver en funktion der kontrollere om der er sket noget nyt på timestamps, desvære indeholder den tabel jeg skal bruge ingen timestamps, men måske PK kan bruges efter som den er fortløbene stigene(1,2,3,4, ect.), men skal funktionen ligge i sessionbean'en eller skal den ligge helt for sig selv(en selvstændig applikation)?
Avatar billede arne_v Ekspert
15. oktober 2003 - 20:45 #27
En auto increment primary key er udmærket til at finde INSERT'ede
records. Men kan ikek bruges til at finde UPDATE'de records.

Jeg ville ligge det i en scheduler service. JBoss har en feature hvor
du kan bede den køre et stykke kode hver X. minut.
Avatar billede arne_v Ekspert
15. oktober 2003 - 20:46 #28
Iøvrigt - skulle I ikke have undersøgt det med database og drivere
inden i valgte J2EE ?
Avatar billede drevi Nybegynder
15. oktober 2003 - 21:18 #29
lol, jo det ville have været smart/rart, desvære blev j2ee ikke valgt ud fra databaserne, men fordi vi skulle bruge noget der kunne give os en god akitektur samt let angang til data over netværk, altså et distubuerede system. J2ee blev valgt ud fra at vi have erfaring med det fra før, dog på Sun's app server, som til tider godt kan være lidt tung. Før hen brugte vi så også kun en type DB, nu er det en ny type eller retter typer. Vi fik så også afvide man kunne sagtens skaffe adgang til databaserne hvis man kunne få det gennem en lokal applikation med driveren, dette har ikke vidst sig at være et problem(vi nåede dog kun teste MS SQL) derfor antog vi det ikke ville blive så stort et problem, men du har ganske ret mere erfaring med enkelte ting, før vi havde kastet os ud i dette projekt ville have været meget ønskværdigt. den ene DB(paradoc) er heller ikke en vi har valgt at køre med, den er blot en del af det firma's øko system, som vi udvikler dette system til, og de ønsker så at vi har de samme data som de allerede har derfor forbindelsen til den, hvilket også først kom midt/slutning system udviklings delen hvor man jo normalt har den slags i baghovedt.
Avatar billede arne_v Ekspert
15. oktober 2003 - 21:25 #30
Sig til hvis I vil have lidt hints til hvordan man laver
en scheduler service i JBoss.
Avatar billede arne_v Ekspert
15. oktober 2003 - 21:25 #31
Og med hensyn til projekt forløbet så kender jeg godt fænomenet.
Avatar billede drevi Nybegynder
15. oktober 2003 - 22:01 #32
jotak det ville da ikke være af vejen med lidt hjælp til det, har du eventuelt et par gode links, jeg ser ikke så meget i min dokumentation fra JBoss, om Schedulering desvære.
Avatar billede drevi Nybegynder
15. oktober 2003 - 22:22 #33
men det løser vel ikke at jeg skal have en driver til at virke til min paradoc's ellers kan JBoss vel ikk ekontrolelr noget som helst på den?
Avatar billede arne_v Ekspert
15. oktober 2003 - 22:28 #34
Du skal stadigvæk have en driver.

Men det kan godt tænkes at JDBC ODBC bridge ikke kan bruges af CMP men
godt kan bruges af en scheduler.

En scheduler er singlethreaded.
Avatar billede arne_v Ekspert
15. oktober 2003 - 22:47 #35
HelloWorld.java:

import java.util.Date;

import org.jboss.varia.scheduler.Schedulable;

public class HelloWorld implements Schedulable {
    public HelloWorld() {
        super();
    }
    public void perform(Date timeOfCall, long remainingRepetitions) {
        System.out.println("Hello world");
    }
}

helloworld-service.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server>
<server>
  <classpath codebase="deploy" archives="mysch.jar"/>
  <mbean code="org.jboss.varia.scheduler.Scheduler"
    name=":service=Scheduler">
    <attribute name="StartAtStartup">true</attribute>
    <attribute name="SchedulableClass">HelloWorld</attribute>
    <attribute name="InitialStartDate">0</attribute>
    <attribute name="SchedulePeriod">10000</attribute>
    <attribute name="InitialRepetitions">-1</attribute>
  </mbean>
</server>
Avatar billede arne_v Ekspert
15. oktober 2003 - 22:48 #36
compile .java (skal bruge scheduler-plugin.jar i classpath)

pak i mysch.jar

deploy mysch.jar i server/deualt/lib

genstart JBoss

deploy .xml
Avatar billede arne_v Ekspert
15. oktober 2003 - 22:49 #37
Og så bliver der skrevet "Hello world" på konsollen hver 10. sekund
Avatar billede drevi Nybegynder
16. oktober 2003 - 00:26 #38
ok så i metoden perform() laver jeg et database lookup og kontrolere hvor vidt den stemmer over ens med den i MS sql f.eks. og hvis den ikke gør så opdatere?

Skal forbindelsen til DB'erne håndteres i klassen eller skal jeg bruge JBoss's forbindelse?
Avatar billede arne_v Ekspert
16. oktober 2003 - 06:34 #39
Jeg vil sige:
  gammeldages JDBC connectin til Paradox
  entity beans til X databasen

(men prøv nu først at se om JDBC og ODBC til CMP kan slæbe sig igennem -
husk at teste load !)
Avatar billede drevi Nybegynder
16. oktober 2003 - 11:37 #40
jeg får den her fejl med min interbase driver:
11:04:01,116 WARN  [ServiceController] Problem starting service jboss.j2ee:jndiName=Kunde,service=EJB
java.lang.VerifyError: (class: interbase/interclient/ErrorKey, method: _$372 signature: (Ljava/lang/String;Ljava/lang/String;I)V) Expecting to find unitialized object on stack

Så det betyder vel den ikke går, jeg leder lige lidt efter en ny...

Er det muligt med schedulering at man kan "trigger" den med en metode i f.eks. en session bean, altså at opdatering af data foregår lige før programmet for brug for data'en??
Avatar billede arne_v Ekspert
16. oktober 2003 - 12:11 #41
Selvfølgelig kan du trigge den ved det.

Men overvej performance konsekvenserne grundigt. Og lige pludseligt
er vi jo tilbage i multithreaded,
Avatar billede arne_v Ekspert
16. oktober 2003 - 12:12 #42
Fejl ser meget mystisk ud. Det ligner en inkonsistens med version af
interbase.interclient.ErrorKey !
Avatar billede drevi Nybegynder
16. oktober 2003 - 12:33 #43
Jeg har søgt rundt om på forums og des lig. alle steder hvor folk kommer med paradoc problmmer vender man tilbage til at bruge enten sun's JDBC eller at forsøge med den paradoc's driver du har hentydet til tidliger(pdxJDBC.jar), det fra rådes dog på paradoc's versioner under 5.0 Så min ligger lige på grænsen.

jeg tror det er fordi interbasen ikke genkender paradoc's DB'en
Avatar billede drevi Nybegynder
21. oktober 2003 - 01:28 #44
Nå løsningen på mit problem, blev at DB-folkene fandt ud af MS SQL server selv kunne replikere data(i en scheduled task) fra en paradoc's database over i en table, så kunne jeg jo hente det derfra.

men det løser jo sådan set ikke problemmet med en paradocs driver ud over at vi kan konstatere at der er en og at den muligvis ikke virker på paradoc under ver. 5.0 , så jeg ved ikke om det kan godtages som et svar.....
Avatar billede drevi Nybegynder
21. oktober 2003 - 01:32 #45
jeg vil så nu alligevel godt give Arne_V halvedelen af point for at lede mig ind på schedulering hvilket førte til en løsning JEG kunne bruge eller er det imod reglerne??
Avatar billede arne_v Ekspert
21. oktober 2003 - 10:25 #46
Den her kategori er ikke ligefrem high activity !

:-)
Avatar billede arne_v Ekspert
21. oktober 2003 - 10:26 #47
og et svar såfremt du får grønt lys
Avatar billede drevi Nybegynder
12. december 2003 - 09:24 #48
Tja ingen brok så det er vel ok
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