Java

egymáshoz hasonló stringek keresése

Fórumok

Adott egy cég több telephellyel. Valami régi dbase alapú alkalmazást használnak telephelyenként. Természetesen telephelyenként külön adatbázissal, viszont ugyan azzal a raktárkészlettel. De rengeteg terméket nem ugyan olyan néven vittek fel. Hasonló, de mégis más. Az ember meg tudja állapítani, hogy az ugyan az a termék de mivel 60 ezer tételről van szó kicsit macerás lenne kézzel összehasonlítani őket, viszont migrálni kellene az adatokat a mi rendszerünkbe.

pl.:
B 80186 KARIFA CH.SWI.LUX 160CM
B 80186 KARÁCSONYFA CH.SWIERK LUX MCHS01/160

vagy

Jégoldó spray
Jégoldó-spray

esetleg sima elgépelés

Kulcstartó
Kulctarto

Van esetleg erre valami lib ami megpróbálja eldönteni, hogy A és B string x valószínűséggel ugyan az e?

Hibernate filtered collection

Fórumok

Hello,

Egy elég egyszerű problémát szeretnék megoldani. Van két entitásom, köztük több..több kapcsolat. Klasszikus employee manager mutatvány.
Egy dolgozóhoz több felettes is tartozhat és egy felettes értelemszerűen több dolgozót irányít.
A cél az lenne, hogy a felettesekből mindig az aktuálisat (max(valtdate)) hozzam le egy collection-be, ami a dolgozó entitásában van.
Bármit csinálok, mindig ott az összes vagy valamilyen egzotikus hiba miatt nem működik.
Tudom, hogy natív sql-el meg Criteria api-val meg lehet ezt csinálni és egy állat vagyok, hogy erre adtam a fejem, de én a mapping-nél szeretném ezt elérni.

A témáról itt írok részletesen

Köszönöm előre is!

Apareo CAS

Fórumok

Va itt esetleg olyan aki

- ert Apareo CAS-hez, tudja, hogyan kell turni, debugolni stb.
- tud segiteni nekunk egy hiba felderiteseben esetleg egyeb dolgok beallitasaban a megfelelo dijazas elleneben?

Hibernate vs EclipseLink insertable = false, updatable = false

Fórumok

Sziasztok!

Nem sikerül működésre bírnom az EntityGraph-ot EclipseLink alatt (https://hup.hu/node/156399), gondoltam megpróbálom a Hibernate-et hátha ott nagyobb sikerrel járok.
Én kis naiv azt hittem hogy a persistence.xml-ben a provider átírásával megúszom a dolgot, de nem.
Az alkalmazásszerver GlassFish.


@Entity
@Table(name = "KEDVEZMENYEK_RAKTAR_EGYEDI")
@IdClass(KedvezmenyekRaktarEgyediPK.class)
public class KedvezmenyekRaktarEgyedi {
   private int idArTipus;
   private ArTipus arTipus;

    @Id
    @Column(name = "ID_AR_TIPUS", insertable = false, updatable = false)
    public int getIdArTipus() {
        return idArTipus;
    }

    public void setIdArTipus(int idArTipus) {
        this.idArTipus = idArTipus;
    }

    @OneToOne
    @JoinColumn(name = "ID_AR_TIPUS", referencedColumnName = "ID")
    public ArTipus getArTipus() {
        return arTipus;
    }

    public void setArTipus(ArTipus arTipus) {
        this.arTipus = arTipus;
    }
    
    ...
 
}

EclipseLink alatt tökéletesen működik a Hibernate-el viszont a következő hibaüzenetet kapom:

org.hibernate.MappingException: Repeated column in mapping for entity: KedvezmenyekRaktarEgyedi column: ID_AR_TIPUS (should be mapped with insert="false" update="false")

Specifikáció szerint ha az egyikben működik a dolog akkor a másikban is kellene ha jól gondolom.
Ha az

idArTipus

mezűnél beállítottam az

insertable = false, updatable = false

paramétereket akkor azt a Hibernate miért nem veszi figyelembe?

JPA Entity Graph

Fórumok

Sziasztok.

A JPA Entity Graph-val kísérletezgetek, de a következő hibaüzenetet kapom:

You must define a fetch group manager at descriptor (...) in order to set a fetch group on the query (...)

EclipseLink-et használok.
Annyit sikerült kideríteni, hogy valami Weaving technikát használ ennek megvalósítására, illetve az EclipseLink oldalán azt írja, hogy ezt az alkalmazás szerverek alapból tartalmazzák mégsem működik a dolog.
Valaki találkozott már ezzel a problémával?

JMeter GET/POST

Fórumok

Sziasztok!

JMeter segítségével szeretnék egy JSF alkalmazáshoz terheléses tesztet készíteni.
Megnéztem milyen kérések futnak le a háttérben és annak megfelelően készítettek a JMeterben egy Teszt Plant-t.
Viszont az a baj, hogy nem úgy viselkednek a dolgok ahogy a böngészőben, hiába megfutnak ugyan azok a POST kérések amiket a böngészőből kilestem.
Van olyan este, hogy ami a böngészőben POST-ként megy azt a JMeterben GET-el kell küldenem, hogy ugyan azt az eredményt kapjam mint a böngészőben.
Nem ugyan úgy kellene a GET/POST kéréseknek viselkedniük függetlenül hogy Böngészőből vagy JMeterből lettek hívva?
Valakinek nincs valami ötlete mit rontok el?

Java dbf lib

Fórumok

Sziasztok!

Dbf állományokat kellene elő állítanunk egy másik alkalmazás számára, hogy adatokat tudjunk átadni nekik.

A következőkkel próbálkoztunk:

https://github.com/jamel/dbf
http://dans-dbf-lib.sourceforge.net
https://github.com/iryndin/jdbf

de az ezekkel előállított dbf állományok egyikét sem tudja a másik alkalmazás olvasni.
Arra tippelünk hogy a karakter kódolás lehet a ludas.

Tud valaki olyan dbf libet mely win1250 vagy 852-es kódolással is tud állományokat elő állítani?

Java packr exe gyanús a virustotal.com szerint

Fórumok

Kalandvágyból írtam egy játékot a LibGDX nevű Javás multiplatform frameworkkel, és most készülök a publikálásra Google Playen, Apple Store-on és Steamen.

A Windows változathoz a "packr" nevű programmal készítettem futtatható csomagot, ami fogja a .jar-t, mellérak egy JRE-t és gyárt hozzájuk egy pici .exe-t, ami elindítja az egészet.

Ahogy az szokott lenni, "az én gépemen működik".

A Steam review viszont tegnap visszadobta a buildet azzal, hogy a virustotal.com-on 64-ből 3 antivírus szerint valami nem stimmel vele.

Ezt a linket küldték: https://www.virustotal.com/#/file/f94c063ff3098b1905996ff9ff03c1c2cc099…

Furcsa, hogy teljesen idegen .exe neveket látok csak, viszont felismertem két játéknevet közöttük, amiket szintén ezzel a LibGDX frameworkkel csináltak, és csak tippelem, hogy szintén packr-rel csomagolták, merthogy a packr-t ajánlja a LibGDX és ugyanaz a csapat fejleszti, és igazából azzal az .exe-vel van gond, amit a packr készít. (Írtam a kollégának, de még nem válaszolt.)

Nekem ez az első ilyen kísérletem, és kicsit elkedvetlenít, hogy közvetlenül a célszalag átszakítása előtt ment kavics a cipőmbe. Akadnak alternatívák: régebbi packr használata, esetleg packr helyett Launch4j, vagy másik Windowson buildelni (bár a saját gépem mindenki szerint vírusmentes, és ismerősök, akik kipróbálták a Windows verziót szintén rendben találtak mindent), de azon se lepődnék meg, ha másik JRE-vel változna a helyzet. Sajan ilyen téren egyáltalán nincs tapasztalatom.

A Steam szerint ez nem feltétlenül ok arra, hogy a játékom kiadatlan maradjon, de én azért szeretném elkerülni az ilyen hamis riasztásokat is.

Van valakinek ötlete?

Tomcat 7/8 logolása (event és access) syslogba valamint exception logolás

Fórumok

Sziasztok,

Kis segítséget szeretnék kérni tőletek Tomcat-be pakolt alkalmazások logolásával kapcsolatban. Eddig log4j/logback/log4j2 keretrendszereket próbáltam ki a témában, amivel sikerült az alkalmazások és Tomcat (event és access) logokat fájlba írni. Syslogba logolás azonban itt-ott problémás volt, az access logokat meg nem is sikerült ilyen módon logolni. Amit találtam a témában: https://pastebin.com/JLEBDmt2

A log4j-nál ezekkel a beállításokkal mentem:

log4j.appender.SYSLOG = org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.Header=true
log4j.appender.SYSLOG.syslogHost = (server)
log4j.appender.SYSLOG.layout = org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern = tomcat %c{2} %x %m%n
log4j.appender.SYSLOG.Facility = LOCAL0

Itt nagyjából jó logokat kaptam, exceptionokkal probléma van (több sorban jelennek meg). Access logokat a syslog-ba nem tudtam irányítani.

logback-nál ezt használtam:

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>(server)</syslogHost>
<port>601</port>
<facility>SYSLOG</facility>
<suffixPattern>tomcat: [%thread] rId:%X{requestID} user:%X{userID} %msg [%logger{36}]</suffixPattern>
</appender>

A fájlok írása itt is jó. Access logokat a syslog-ba nem tudtam irányítani, így próbáltam:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<property name="max.retention.days" value="60" />
<property name="max.file.size" value="20MB" />

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.access.PatternLayoutEncoder">
<pattern>%t{yyyy-MM-dd HH:mm:ss.SSS} %h %i{X-Forwarded-For} %l %u "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
</encoder>
</appender>

<appender name="ACCESS-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/localhost-access.log</file>
<append>true</append>
<encoder class="ch.qos.logback.access.PatternLayoutEncoder">
<charset>utf-8</charset>
<pattern>%t{yyyy-MM-dd HH:mm:ss.SSS} %h %i{X-Forwarded-For} %l %u "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/archive/localhost-access-%d{yyyyMMdd}-%i.log.zip</fileNamePattern>
<maxHistory>${max.retention.days}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${max.file.size}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<appender name="ACCESS-SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>(server)</syslogHost>
<port>601</port>
<facility>SYSLOG</facility>
<encoder class="ch.qos.logback.access.PatternLayoutEncoder">
<pattern>tomcat/access: %h %i{X-Forwarded-For} %l %u "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
<pattern>common</pattern>
</encoder>
</appender>.

<appender-ref ref="ACCESS-LOG" />
<appender-ref ref="ACCESS-SYSLOG" />

</configuration>

log4j2 esetében: Itt nagyjából jó logokat kaptam, exceptionokat tudtam kezelni. Access logokat a syslog-ba nem tudtam irányítani.

A fő kérdés az lenne, hogy mi a megfelelő eljárás az access logok syslogba irányításánál Tomcat esetében? Log4j2-nél erre tényleg nincs lehetőség, csak külső modul fordításával? (https://stackoverflow.com/questions/18056682/tomcat-access-logging-thro…, https://marcoscorner.walther-family.org/2012/06/apache-tomcat-access-lo…) Az exceptionok kezelésének mi a jó megoldása syslogszerver esetén log4j2-t vagy logback-et használva?

Jpa OneToMany perzisztálási hiba

Fórumok

Sziasztok.

Lenne egy entitás mely a vevő címek gépkocsikhoz rendelését hivatott reprezentálni.
Működik is szépen, ha már van létező (mentett) gépkocsi és ahhoz rendelek címeket.

De ha létrehozok egy új gépkocsi entitást(mely még nem volt perzisztálva), hozzáadok vevő címeket

entity.getVevocimek().add(cim);

(a vevő címek már léteznek az adatbázisban) akkor

Cannot add or update a child row: a foreign key constraint fails

hibaüzenetet kapok.
Azt gyanítom, hogy a JPA nem tudja (vagy én nem tudom hogy kell) megoldani, hogy először elmentse a szülő, majd a gyerek rekordokat.


CREATE TABLE VEVOCIM (
  ID                INTEGER    NOT NULL,
  IDMOD             INTEGER    NOT NULL,
  CONSTRAINT PK_VEVOCIM PRIMARY KEY (ID, IDMOD)
)

CREATE TABLE GEPKOCSI (
  ID                      INTEGER     NOT NULL AUTO_INCREMENT,
  CONSTRAINT PK_GEPKOCSI PRIMARY KEY (ID),
)

CREATE TABLE GEPKOCSI_VEVOCIM_OSSZERENDELO (
  ID_GEPKOCSI INTEGER NOT NULL,
  ID_VEVOCIM  INTEGER NOT NULL,
  ID_VEVOCIM_MOD INTEGER NOT NULL,
  CONSTRAINT PK_GEPKOCSI_VEVOCIM_OSSZERENDELO PRIMARY KEY (ID_GEPKOCSI, ID_VEVOCIM, ID_VEVOCIM_MOD),
  CONSTRAINT FK_GEPKOCSI_VEVOCIM_OSSZERENDELO_01 FOREIGN KEY (ID_GEPKOCSI) REFERENCES GEPKOCSI (ID),
  CONSTRAINT FK_GEPKOCSI_VEVOCIM_OSSZERENDELO_02 FOREIGN KEY (ID_VEVOCIM, ID_VEVOCIM_MOD) REFERENCES VEVOCIM (ID,IDMOD)
);


@Entity
@IdClass(VevoPK.class)
public class Vevo {
    @Id
    @Column(name = "ID")
    private int id;

    @Id
    @Column(name = "ID")
    private int idmod;
....
}


@Entity
public class Gepkocsi {
    @Id
    @Column(name = "ID")
    private int id;

    @OneToMany
    @JoinTable
            (
                    name = "GEPKOCSI_VEVOCIM_OSSZERENDELO",
                    joinColumns = {@JoinColumn(name = "ID_GEPKOCSI", referencedColumnName = "ID")},
                    inverseJoinColumns = {@JoinColumn(name = "ID_VEVOCIM", referencedColumnName = "ID", unique = true),
                            @JoinColumn(name = "ID_VEVOCIM_MOD", referencedColumnName = "IDMOD", unique = true)}
            )
    private List<Vevocim> vevocimek;

Ha csak simán perzisztálok


public void save {
            entityManager.getTransaction().begin();
            entityManager.persist(getEntity());
            entityManager.getTransaction().commit();
}

akkor ezt a hibaüzenetet kapom.


org.eclipse.persistence.exceptions.DatabaseException Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails

Ha módosítom a Gepkocsi entitást


@OneToMany(cascade = CascadeType.ALL)

akkor az alábbi hibaüzenetet jön:


org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key 'PRIMARY'
Error Code: 1062
Call: INSERT INTO VEVOCIM (ID, IDMOD, AJTO, AKTIV, CIMTIPUS, CK, CREATE_TIME, CREATE_USER, EMELET, EPULET, HAZSZAM, HELYRAJZISZAM, IDVEVO, IDVEVOMOD, IRANYITOSZAM, KERULET, KOZTERULET, KOZTERULETJELLEGE, LAT, LEPCSOHAZ, LNG, MOD_TIME, MOD_USER, NEV, ORSZAG, TELEPULESNEVE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

tehát a már létező vevőcímet akarja visszamenteni az adatbázisba.

Hogy kell ezt rendesen csinálni? A vevőcímek már léteznek, perzisztálva vannak.

Az új gépkocsi rögzítése közben szeretném hozzárendelni a vevő címeket és mentéskor történjen meg gépkocsi adatainak mentése a

GEPKOCSI

táblába és a

GEPKOCSI_VEVOCIM_OSSZERENDELO

táblába is insertálja be a megfelelő sort.