Java: Né már, megette! Avagy integrálta.

Újabban már Java-irányban is kiváncsizom, persze nem a normális esetek, hanem a problémás hibakeresések irányába (vegyes jegyzetek)

2018-11-23 09:36
Unalmamban elkezdtem összegyűjteni, hogy hány külső komponens kell ahhoz, hogy a jax-ws működjön Java10-zel. Szerk: aztán feladtam. Mindenesetre az jó hír, hogy egyes jax-ws implementációknak az is túl megterhelő, hogy az xml-fejrészbe odategyék hogy encoding='UTF-8'. Mondjuk igaz, ezzel megspórolunk vagy 17 bájtot.
És akkor még van ez a szemrehányás, ami miatt szégyellem ugyan magam, de nem egészen tudnám, hogyan tudnám jóvátenni a vétkemet:


WARNING: Using deprecated META-INF/services mechanism
with non-standard property:
javax.xml.soap.MetaFactory.
Property javax.xml.soap.SAAJMetaFactory should be used instead.

2018-03-15 16:07
Most a SAXParser-rel játszódom, ez is egy integrált termék, mindenesetre két különböző készüléken két különböző JRE-vel más-más működést vélek látni, persze más-más implementációval:
AIX/IBM-J9:
org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser
Linux/OracleJDK:
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser

2018-03-15 16:00
Egy kisebb ügy: JBOSS 6 alatt (mondjuk a naptárra ránézhetne már az illetékesünk) nem úgy működött a log4j, ahogy azt a log4j.properties alapján elképzeltük volna. Szorgalmas olvasgatás után arra jutottunk, hogy a Jboss az ő kegyességében sokkal jobban log4j-zik, mint maga a log4j, ezért kéretlenül át is veszi annak a feladatát, kivéve, ha megkérjük, hogy ne tegye:


WEB-INF/jboss-deployment-structure.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
     <exclusions>
       <module name="org.apache.log4j" />
     </exclusions>
   </deployment>
 </jboss-deployment-structure>

2018-03-15 15:49
Egy másik integrált termék a JAX-WS Ez az EE-ből érkezett az SE-be. Mármint majdnem. A client, server, servlet hármasából csak az első kettő érkezett meg, a harmadik eltévedt.
Apróbb érdekesség, hogy bizonyos beállítások attól függően végzendők, hogy beépített vagy különálló verziót használunk-e:


beépített:
com.sun.xml.internal.ws.developer.JAXWSProperties.CONNECT_TIMEOUT =
   "com.sun.xml.internal.ws.connect.timeout"
standalone:
com.sun.xml.ws.developer.JAXWSProperties.CONNECT_TIMEOUT =
   "com.sun.xml.ws.connect.timeout"

Továbbá, ha a különálló verziót (jaxws-rt.jar) használjuk, akkor annak a függőségei is kellenek (pl istack), amelyek esetleg szintén benne vannak a JRE-ben, csak átnevezve (jaxb-core.jar:com.sun.istack -> rt-jar:com.sun.istack.internal) és/vagy szűkített funkcionalitással

2018-03-15 13:59
Itt van rögtön a JAXB: része a JRE-nek 1.6 óta. Nagyjából. A kevésbé fontos különbség az xjc indítása:


standalone: /somepath/xjc.sh
integrated: /otherpath/jxc
vagy:       java -cp ${JAVA_HOME}/lib/tools.jar com.sun.tools.internal.xjc.XJCFacade

A fontosabb, hogy az integrált verzió nem tartalmaz minden komponenst és/vagy más néven tartalmazza a komponenseket, mint a stand-alone verzió. Lásd a JaxWS-nél.

Hozzászólások

JBoss, JAX-WS, JAXB - tessek mar rendesen hasznalni.

(5-os AIXen futtatod remelem!)

Az integrált JAXB helyett elég ezeket használni:


activation.jar
jaxb-api.jar
jaxb-impl.jar

Források:
http://www.java2s.com/Code/Jar/j/Downloadjavaxactivation110v20110507123…
https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/

A JAX-WS már nehezebbnek tűnik... Vaktában próbálkozás és google-abúzálás útján eddig ezek kerültek a látóterembe:


javax.xml.soap                  javax.xml.soap-api 1.4.0
com.sun.xml.ws                  jaxws-ri           2.3.1
com.sun.org.apache.xml.internal resolver           20050927

Szerk: Valamennyire működik, de azért vannak még érdekességek, pl:


WARN  javax.xml.soap - Using deprecated META-INF/services mechanism
  with non-standard property: javax.xml.soap.MetaFactory.
Property javax.xml.soap.SAAJMetaFactory should be used instead.