Java

Spring boot lehetőségek?

Fórumok

Próbálok világosabban látni a Sping Boottal kapcsolatban, nem tudom merre induljak...

 

Kérdés röviden:

A Spring boot alkalmas frontend programozásra?

 

Bővebben:

Ha írok egy REST API-t Spring bootban. A kliens oldali rész is megoldható Spring boot segítségével? Letudom a REST API-t kérdezni kliens oldalon Spring boot-tal? Valami letölthető Spring boot alkalmazás klines oldalon. Létezik ilyen? Vagy csak JavaScript használható kliens oldalon?

JPA OneToMany Id mezők nem frissülnek merge után

Fórumok

Van egy OneToMany reláció, pl. egy Post-Comments tankönyvi lépda:

public class Post implements Serializable {
    private int id;
    private List<Comment> comments;



    @Id
    @Column(name = "ID")
    @TableGenerator(...)
    @GeneratedValue(...)
    public int getId() {
        return id;
    }

    @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
    public List<Comment> getComments() {
        return comments;
    }
}
public class Comment implements Serializable {
    private int id;
    private int idPost;
    private Post post;

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(name = "ID_POST", insertable = false, updatable = false)
    public int getIdPost() {
        return idPost;
    }

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "ID_POST", referencedColumnName = "ID")
    public Post getPost() {
        return post;
    }
}

Az adatbázis kezelő alatta MySql és a Comment tábla ID mezője AUTOINCREMET.

Abban az esetben ha entityManager.merge(post) utasítással mentek egy Post entitást melynek a comments listájához adok egy Comment entitást, akkor szépen elment, viszont a Comment entitás ID mezője, melynek a MySql ad értéket az autoinc miatt nem frissül. Csak ha egy entityManager.refres() vagy bármilyen más módon újra lekérem. Mit kell még tenni hogy a merge hatására frissítse az entitást úgy hogy az id értékét visszakapja anélkül, hogy újra lekérdezném?

A JPA provider EclipseLink.

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.