Java

GlassFish @Schedule jobok leállnak ha megváltoztatják a rendszeridőt

Fórumok

Sziasztok!

Egyik ügyfelünknél, az üzemeltetés sikeresen elkonfigurálta egy szerver idő és időzóna beállításait, így elég "érdekes" adatokat rögzített az alkalmazásunk.

Szeretnénk elébe menni az ilyen dolgoknak, így az elképzelés szerint egy @ApplicationScoped-os @Schedule eljárással percenként lekérnénk a pontos időt egy NTP szervertől, illetve az alkalmazásunkat futtató szerver időzóna beállítását. Ezt eltárolnánk, majd ahol kritikus az idő, ott ezen adatok alapján megnéznénk hogy a pontos idő és az időzóna rendben van-e. Azért percenként scannelnénk és az itt kapott adatokból dolgoznánk, mert elég sok helyen kell figyelni, hogy az idő renden van-e, és nem szeretnénk másodpercenként x alkalommal az NTP szervertől kérdezni.

A lényeg, hogy elkezdtük fejleszteni, tesztelni a dolgot és ha átállítjuk a rendszeridőt a GlassFish alatt a @Schedule dolgaink úgy leállnak, hogy csak na.

Az időzóna lekérése (ZoneId.systemDefault()) meg mintha a jvm az indulásakor lekérné a rendszer időzónáját és mindig ezt az értéket adná vissza.

Ezt leteszteltem egy kis konzolos appal. Mindig a jvm indulásakor érvényben lévő időzónát adja vissza. Viszont az időt azt jól adja vissza ez a konzolos app. Ha változik alatta az idő akkor már az újat adja vissza.

Gyanítom ez a GF-nél is így lenne csak ott maga az ejb timer service hasal el ha megváltozik a rendszeridő, így esélye sincs lekérni a rendszeridőt.

Szóval 2 dolgot szeretnék megoldani:

1. ne szálljon el az ejb timer service ha megváltozik a rendszeridő

2. szükség lenne a lekérdezés pillanatában beállított rendszer időzónára és nem arra ami a jvm indulásakor volt.

Tomcat redirect kezelés

Fórumok

Üdv,

 

van egy Tomcat-et használó Java alkalmazás, ami egy korábbit hivatott leváltani.

A régi alkalmazásban van elég sok URL, ami megszűnik, és ezeket most át kellene irányítani egy másik URL-re.

A Tomcat előtt (mondjuk, hogy) nincs proxy, ahol ezt meg lehetne csinálni.

Milyen megoldások, lehetőségek vannak erre?

Különféle típusok egy tömbbe rakása JAVA-ban [megoldva]

Fórumok

Van egy tömb JAVA 8-ban

List<Elemek> list;

 

public class Elemek{

   private final int id;

   public Elemek(int id) {
      this.id = id;
   }

   public int getId() {
      return this.id;
   }

}

public class A extends Elemek

{

   private int valtozo_A;

   public A(final int id, final int valtozo_A) {
      super(id);
      this.valtozo_A = valtozo_A;
   }

   public int getValtozo_A() {
      return this.valtozo_A;
   }

}

public class B extends A;

{

   private int valtozo_B;

   public B(final int id, final int valtozo_A, final int valtozo_B) {
      super(id);
      this.valtozo_A = valtozo_A;
      this.valtozo_B = valtozo_B;
   }

   public int getValtozo_B() {
      return this.valtozo_B;
   }

}

List<Elemek> list = new ArrayList();

B b = new B(1, 2, 3);

list.add(b);

((B) list.get(0)).getValtozo_B(); // 3

 

Ha belerakom a tömbbe az A-t vagy a B-t, és kiolvasom,

akkor levágja az valtozo_A-t és a valtozo_B-t és az mindig null-t ad vissza:

(B) list.get(0);

Hogy lehet ezt megoldani?

Tényleg valamit interface-nek kell definiálni, de miért?

Nem tudom törölni a "final"-okat a konstruktorokból, mert az IntelliJ fejlesztőkörnyezet visszarakja őket.

 

Megoldódott végül. Nem ott volt a baj, hanem hiányzott valami teljesen más, avagy

jóval előtte egy kitöltetlen mező blokkolta, hogy eljusson oda, avagy nem levágta, hanem más volt a baj.

Végül nem kellett az interface.

JNI

Fórumok

Van egy fizikai eszköz amit Java alkalmazásból kellene vezérelni. Ehhez kaptunk egy dll-t (device.dll). C-ben van írva, megkaptuk a függvények listáját melyeket hívni lehet.

Pl:

int __stdcall ReadSerNumber(char* SerNum);

Ahogy próbálom hívni:

public class Main {
    static {
        System.loadLibrary("device"); 
    }

    private native int ReadSerNumber(String SerNumber);

    public static void main(String[] args) {
        Main obj = new Main();
        obj.ReadSerNumber(...
    }
}

Nem igazán sikerült szerintem megértenem a JNI lényegét. Ha egy meglévő libet szeretnék felhasználni akkor is létre kell hozni a javah -val a header állományokat, és kell írnom valami c kódot hozzá, hogy működjön vagy enélkül is kellene mennie a dolognak?

Java collection, több kulcs, keresés

Fórumok

Adott a következő probléma.

Van egy osztály

class A {
  String a;
  String b;
  String c;
  float d;
  float e;
}

 

Ebből lenne példányosítva úgy 80-100 ezer példány, amit egy collectionben kellene összefogni, és ebben keresni (nagyon gyorsan!!!), mind az a, b, c mezőkre.

Az "a" mezőre úgy mint pl. az IntelliJ-ben mikor egy osztályra keresek (Ctrl +N)

pl. ha kereső kifejezés az "alm"

akkor megtalálja az

ALMa

AngoL Marha

ÁLMos

ÁLdozatos Munka

Állami Láblógató Minisztérium

stringeket. (Van erre keresésre valami szép magyar vagy angol szakkifejezés?) Az a sebesség amit az IntelliJ tud a keresésre jó lenne. :)

A "b", "c" mezőkre elég lenne sima sql like mintájú keresés, és nem muszáj egy lépésben keresni, ha kell becsomagolom én egy osztályba ami külön külön meghívja az egyes mezőkre a keresést. Vagy az sem gond ha a három kereső mező miatt 3 külön collection lenne.

Van erre valami megoldás?

Java EE alkalmazások automatikus telepítése

Fórumok

Sziasztok!

Elértük azt a kritikus ügyfélszámot, aminél már az alkalmazásunk új verzióinak egyesével történő telepítése az ügyfeleknél meghaladja a kapacitásunkat.

Létezik erre valami eszköz, amivel egy központi helyről elindítható a telepítési folyamat, deployálja az EAR-t a GlassFish alkalmazásszerverre, megfuttatja az SQL scripteket ami az adatbázis struktúrát frissíti, stb.?

[megoldva] Netbeans 12.0 JavaFX projekt hiba (fc32)

Fórumok

Üdv!

JavaFX FXML projekt esetén ezt írja:

"Failed to automatically set-up a JavaFX Platform.

Please go to Platform Manager, create a non-default Java SE platform, then go to the JavaFX tab,

enable JavaFX and fill in the paths to valid JavaFX SDK and JavaFX Runtime.

Note: JavaFX SDK can be downloaded from ..."

 

$ rpm -qa|grep java
java-1.8.0-openjdk-headless-1.8.0.272.b10-0.fc32.x86_64
java-1.8.0-openjdk-1.8.0.272.b10-0.fc32.x86_64
tzdata-java-2020d-1.fc32.noarch
abrt-java-connector-1.1.5-1.fc32.x86_64
java-11-openjdk-devel-11.0.9.11-0.fc32.x86_64
java-11-openjdk-headless-11.0.9.11-0.fc32.x86_64
java-1.8.0-openjdk-devel-1.8.0.272.b10-0.fc32.x86_64
javapackages-tools-5.3.0-9.fc32.noarch
java-11-openjdk-11.0.9.11-0.fc32.x86_64
javapackages-filesystem-5.3.0-9.fc32.noarch

 

Hozzak létre non-default Java SE-t. Nem egészen értem mit akar.

JAVA program Ryzen 2500U fagyás MEGOLDVA

Fórumok

Üdv! A Jogkódex nevű program Ryzen 2500U procival kifagy. Ugyanez a program Athlon 200GE alatt vígan dolgozik. Próbált JAVA verziók: Oracle 1.8 OpenJDK 11 Kernelek: 5.4 ; 5.8 Disztrók: Linux Mint 19.3; LMDE A logokban nincs nyoma a fagyásnak. Terminálból indítva hibaüzenet nincs. Kérdés, hogyan tudom kideríteni a fagyás okát?

 

Megoldás: BIOS update megoldotta. Kellett hozzá azbest és Polesz segítsége. Hirensbootcd-vel, amit a Rufus-szal írtam ki, frissíteni tudtam a BIOS-t, és lám elindult a csoda..