Tipp für Leute die metasfresh als Docker installiert haben und trotzdem den Java Client benötigen!

deutsch

#1

Metasfresh lässt sich super als Docker installiereren und vorallen aktualisieren!!

Aber was wenn ich mit dem Java-Client Zugriff benötige, weil halt in der WebUI noch
nicht alles so zu konfigurieren ist wie es mit dem Client möglich ist.

Die Anleitung:
http://docs.metasfresh.org/howto_collection/Wie_benutze_ich_den_Java_client_mit_Docker.html

ist hier anzuwenden UND … ganz wichtig und aus der Anlleitung leider nicht ersichtlich … die
docker-compose_javaclient.yml liegt im Ordner extras!!! Diese muss wie in der Anleitung
beschrieben entweder kopiert und angepasst oder der Befehl aus der Anleitung mit dem Pfad zur
Datei angegeben werden!

Dann klappt es … Java client mit Port :8282 downloaden

Wichtig für den Client ist auch, dass auf dem Windows PC mit dem zugegriffen werden soll die
Hostdatei angepasst wird!! Hier wie in der Anleitung db eine IP Adresse (oder Host-dns namen) geben.

Eventuell hilft das einige User …


#2

hi Daniel,

vielen Dank für den Hinweis!

Du kannst die Doku gerne forken, ändern und mit einem Pull Request deine Änderung übermitteln!
Auch die Doku ist Open Source :wink:

VG
Norbert

PS: helfe dir gerne dabei!


#3

Hallo
Ich habe heute den Java Client erfolgreich mit dem letzten Docker Container zum laufen gebracht. Mir scheint, dass mittlerweile die extras/docker-compose_javaclient.yml nicht mehr auf dem aktuellem Stand ist.
Ich hätte eine aktualisierte version, soll ich die irgendwo commiten?
Wenn ja, wäre ich für einen Wegweiser dankbar ;).
LG Norbert


#4

Hi Norbert,

ich schätze mal der PR ist von dir?

Wir schauen uns den an!

Viele Grüße
Norbert


#5

Morgen Norbert
Genau, der ist von mir, ich hab ihn mal auf master gemacht, auch wenn das wahrscheinlich falsch war.
Freu mich auf feedback.
LG Norbert


#6

Hi Norbert,

PR wurde zwischenzeitlich geprüft und gemerged.

Vielen Dank!

norbert


#7

Sehr gern, ich würde dann bei Gelegenheit noch die Doku anpassen. LG Norbert


#8

Hallo könnte mir jemand einen Ratschlag geben woran es liegen könnte das ich zwar am Anfang eine Verbindung aufbauen kann aber dann wen ich den Nutzer auswähle, es zu einem Crash kommt und es heißt keine Verbindung zur Datenbank?

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jaxRsConfig' defined in URL [jar:file:/C:/Users/***/Desktop/metasfresh-client/metasfresh/lib/metasfresh-dist-swingui-5.105.2-1009+release.jar!/BOOT-INF/lib/de.metas.jax.rs-5.105.2-19+release.jar!/de/metas/jax/rs/JaxRsConfig.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [de.metas.jax.rs.JaxRsConfig$$EnhancerBySpringCGLIB$$745631d4]: Constructor threw exception; nested exception is org.adempiere.exceptions.DBNoConnectionException: @NoDBConnection@: Connections could not be acquired from the underlying database!
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:279)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
    at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
    at de.metas.SwingUIApplicationTemplate.main(SwingUIApplicationTemplate.java:77)
    at de.metas.SwingUIApplication.main(SwingUIApplication.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:587)

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [de.metas.jax.rs.JaxRsConfig$$EnhancerBySpringCGLIB$$745631d4]: Constructor threw exception; nested exception is org.adempiere.exceptions.DBNoConnectionException: @NoDBConnection@: Connections could not be acquired from the underlying database!
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:271)
    ... 25 common frames omitted
Caused by: org.adempiere.exceptions.DBNoConnectionException: @NoDBConnection@: Connections could not be acquired from the underlying database!
    at org.adempiere.exceptions.DBNoConnectionException.wrapIfNeeded(DBNoConnectionException.java:51)
    at org.compiere.db.CConnection.getConnection(CConnection.java:1117)
    at org.compiere.util.DB.createConnection(DB.java:418)
    at org.compiere.util.DB.createConnection(DB.java:463)
    at org.compiere.util.DB.getConnectionRO(DB.java:399)
    at org.adempiere.sql.impl.AbstractCStatementProxy.<init>(AbstractCStatementProxy.java:81)
    at org.adempiere.sql.impl.CPreparedStatementProxy.<init>(CPreparedStatementProxy.java:64)
    at org.adempiere.sql.impl.StatementsFactory.newCPreparedStatement(StatementsFactory.java:74)
    at org.compiere.util.DB.prepareStatement(DB.java:707)
    at org.compiere.util.DB.prepareStatement(DB.java:671)
    at org.compiere.model.POInfo.loadInfo(POInfo.java:297)
    at org.compiere.model.POInfo.<init>(POInfo.java:195)
    at org.compiere.model.POInfo.<init>(POInfo.java:60)
    at org.compiere.model.POInfo$2.call(POInfo.java:163)
    at org.compiere.model.POInfo$2.call(POInfo.java:158)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:5065)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211)
    at com.google.common.cache.LocalCache.get(LocalCache.java:4154)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:5060)
    at de.metas.cache.CCache.get(CCache.java:559)
    at org.compiere.model.POInfo.getPOInfo(POInfo.java:157)
    at org.compiere.model.POInfo.getPOInfo(POInfo.java:87)
    at org.adempiere.ad.dao.impl.TypedSqlQuery.getPOInfo(TypedSqlQuery.java:154)
    at org.adempiere.ad.dao.impl.TypedSqlQuery.buildSQL(TypedSqlQuery.java:1203)
    at org.adempiere.ad.dao.impl.TypedSqlQuery.list(TypedSqlQuery.java:294)
    at org.adempiere.ad.dao.impl.TypedSqlQuery.list(TypedSqlQuery.java:277)
    at de.metas.jax.rs.impl.JaxRsDAO.retrieveEndpoints(JaxRsDAO.java:70)
    at de.metas.jax.rs.impl.JaxRsDAO.retrieveClientEndpoints(JaxRsDAO.java:58)
    at de.metas.jax.rs.impl.JaxRsBL.createClientEndPoints(JaxRsBL.java:321)
    at de.metas.jax.rs.JaxRsConfig.<init>(JaxRsConfig.java:68)
    at de.metas.jax.rs.JaxRsConfig$$EnhancerBySpringCGLIB$$745631d4.<init>(<generated>)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
    ... 27 common frames omitted

Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
    at org.compiere.db.DB_PostgreSQL.getCachedConnection(DB_PostgreSQL.java:453)
    at org.compiere.db.CConnection.getConnection(CConnection.java:1095)
    ... 64 common frames omitted
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
    at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1469)
    at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
    at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
    ... 67 common frames omitted
Caused by: org.postgresql.util.PSQLException: Der Verbindungsversuch schlug fehl.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:454)
    at org.postgresql.Driver.connect(Driver.java:256)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:214)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Caused by: java.net.UnknownHostException: db
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at org.postgresql.core.PGStream.<init>(PGStream.java:70)
    at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
    ... 12 common frames omitted

das ist der Fehler der mir in der Konsole ausgegeben wird.


Dieser Fehler ist in einem Java-Appletfenster das 3 Monitore breit ist.

2019-05-31 02:22:32.575 INFO 9416 — [ main] org.compiere.apps.ADialog : Error - Error creating bean with name ‘jaxRsConfig’ defined in URL [jar:file:/C:/Users/****/Desktop/metasfresh-client/metasfresh/lib/metasfresh-dist-swingui-5.105.2-1009+release.jar!/BOOT-INF/lib/de.metas.jax.rs-5.105.2-19+release.jar!/de/metas/jax/rs/JaxRsConfig.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [de.metas.jax.rs.JaxRsConfig$$EnhancerBySpringCGLIB$$745631d4]: Constructor threw exception; nested exception is org.adempiere.exceptions.DBNoConnectionException: @NoDBConnection@: Connections could not be acquired from the underlying database!

Firewall ist per ufw disabled, also kann’s nicht dran liegen, die Router-Firewall ist auf exposed. Was ich auch seltsam finde ist das ich erst mal eine Komplett weise Seite bekomme wenn ich via “8080” drauf gehe um das WebUi zu nutzen, dann dauert das ca 5 Minuten, dann muss ich ne’n refresh machen und dann läuft das WebUi.
Was ich extrem komisch finde ist das ich zum einen via DynDns eine Verbindung zur DB bekomme als auch mit dem in meiner Hosts eingetragenen Verbindung als auch mit der Direkt IP aber nach der Auswahl ob metasfresh user, systemadmin usw. wirft er mir den Fehler das er keine Verbindung mehr hat.

System: Ubuntu server 18.04 mit Docker.
könnte ich was mit Java Code anfangen würde ich mich selber da durch wühlen. Aber Java und ich verstehen sich wie Katzen und Hunde.