Project

General

Profile

Bug #1914

database conversion requires Internet connectivity

Added by Eric Faulhaber over 11 years ago. Updated over 7 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:

hibernate-mapping-3.0.dtd (44.3 KB) Constantin Asofiei, 11/11/2013 05:32 AM

evl_upd20150718a.zip - Fix sourceforge dependency (4.73 KB) Eugenie Lyzenko, 07/17/2015 07:17 PM

History

#1 Updated by Eric Faulhaber over 11 years ago

While converting a project without being connected to the Internet, I hit an exception when the JVM tried to resolve a URI reference in the Hibernate DTD (hibernate.sourceforge.net, I think it was). I no longer have the log, but I believe this was during the DDL generation phase, when we use Hibernate to load the DMOs. The XML parser apparently was trying to resolve the sourceforge site referenced in the DTD, and it threw an exception (UnknownHostException IIRC).

I saw this using OpenJDK 7 on Ubuntu, not sure if it happens with other versions of the JVM. To recreate, run full conversion of a project (e.g., Majic) while disconnected from the Internet.

#2 Updated by Eric Faulhaber over 11 years ago

  • Target version set to 24

#3 Updated by Constantin Asofiei over 11 years ago

The stacktrace for this error is:

Generating INDEX DDL for table ...
Reading merge DMO definitions...
EXPRESSION EXECUTION ERROR:
---------------------------
hbmRoot = xml.parse(hbmFile, false, null)
              ^  { hibernate.sourceforge.net }
---------------------------
EXPRESSION EXECUTION ERROR:
---------------------------
dmoDef = execLib('readMergeDMODefinition', 
                                            dmoClass, classElem)
         ^  { Expression execution error @1:15 }
---------------------------
EXPRESSION EXECUTION ERROR:
---------------------------
allMergeDMOs = execLib("readAllMergeDMODefinition", dbName)
               ^  { Expression execution error @1:10 }
---------------------------
EXPRESSION EXECUTION ERROR:
---------------------------
execLib('registerMergeDMOs', pkgPath, handler)
^  { Expression execution error @1:16 }
---------------------------
ERROR:
java.lang.RuntimeException: ERROR!  Active Rule:
-----------------------
      RULE REPORT      
-----------------------
Rule Type :   WALK
Source AST:  [ majic ] DATA_MODEL/ @0:0 {30064771073}
Copy AST  :  [ majic ] DATA_MODEL/ @0:0 {30064771073}
Condition :  hbmRoot = xml.parse(hbmFile, false, null)
Loop      :  false
--- END RULE REPORT ---

    at com.goldencode.p2j.pattern.PatternEngine.run(PatternEngine.java:718)
    at com.goldencode.p2j.convert.ConversionDriver.processTrees(ConversionDriver.java:993)
    at com.goldencode.p2j.convert.ConversionDriver.generateDDL(ConversionDriver.java:699)
    at com.goldencode.p2j.convert.ConversionDriver.middle(ConversionDriver.java:651)
    at com.goldencode.p2j.convert.ConversionDriver.main(ConversionDriver.java:1723)
Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:1
    at com.goldencode.expr.Expression.execute(Expression.java:430)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
    at com.goldencode.p2j.pattern.RuleContainer.apply(RuleContainer.java:488)
    at com.goldencode.p2j.pattern.RuleSet.apply(RuleSet.java:1)
    at com.goldencode.p2j.pattern.PatternEngine.apply(PatternEngine.java:1084)
    at com.goldencode.p2j.pattern.PatternEngine.processAst(PatternEngine.java:1003)
    at com.goldencode.p2j.pattern.PatternEngine.run(PatternEngine.java:690)
    ... 4 more
Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:16
    at com.goldencode.expr.Expression.execute(Expression.java:430)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
    at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:396)
    at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:667)
    at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1056)
    at com.goldencode.expr.CE1530.execute(Unknown Source)
    at com.goldencode.expr.Expression.execute(Expression.java:336)
    ... 10 more
Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:10
    at com.goldencode.expr.Expression.execute(Expression.java:430)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
    at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
    at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:413)
    at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
    at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
    at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
    at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
    at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
    at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:413)
    at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
    at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
    at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:396)
    at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:667)
    at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1056)
    at com.goldencode.expr.CE1531.execute(Unknown Source)
    at com.goldencode.expr.Expression.execute(Expression.java:336)
    ... 16 more
Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:15
    at com.goldencode.expr.Expression.execute(Expression.java:430)
    at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
    at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:396)
    at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:667)
    at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1056)
    at com.goldencode.expr.CE1548.execute(Unknown Source)
    at com.goldencode.expr.Expression.execute(Expression.java:336)
    ... 37 more
Caused by: java.net.UnknownHostException: hibernate.sourceforge.net
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:153)
    at com.goldencode.util.XmlHelper.parse(XmlHelper.java:423)
    at com.goldencode.util.XmlHelper.parse(XmlHelper.java:296)
    at com.goldencode.p2j.xml.XmlPatternWorker$Library.parse(XmlPatternWorker.java:234)
    at com.goldencode.expr.CE1565.execute(Unknown Source)
    at com.goldencode.expr.Expression.execute(Expression.java:336)
    ... 43 more

#4 Updated by Stanislav Lomany over 10 years ago

Unlike the previous MAJIC conversion error this one occurs at runtime at test server startup when it is offline. The server tries to connect to www.hibernate.org.

com.goldencode.p2j.cfg.ConfigurationException:  Initialization failure
    at com.goldencode.p2j.main.StandardServer.hookInitialize(StandardServer.java:1446)
    at com.goldencode.p2j.main.StandardServer.bootstrap(StandardServer.java:697)
    at com.goldencode.p2j.main.ServerDriver.start(ServerDriver.java:366)
    at com.goldencode.p2j.main.CommonDriver.process(CommonDriver.java:423)
    at com.goldencode.p2j.main.ServerDriver.process(ServerDriver.java:141)
    at com.goldencode.p2j.main.ServerDriver.main(ServerDriver.java:648)
Caused by: java.lang.RuntimeException: com.goldencode.p2j.persist.PersistenceException: Couldn't read MetaDbImpl.hbm.xml document
    at com.goldencode.p2j.main.StandardServer$5.initialize(StandardServer.java:870)
    at com.goldencode.p2j.main.StandardServer.hookInitialize(StandardServer.java:1442)
    ... 5 more
Caused by: com.goldencode.p2j.persist.PersistenceException: Couldn't read MetaDbImpl.hbm.xml document
    at com.goldencode.p2j.persist.DatabaseManager.getBackingTableName(DatabaseManager.java:607)
    at com.goldencode.p2j.persist.ORMHandler.mapClass(ORMHandler.java:211)
    at com.goldencode.p2j.persist.DatabaseManager.registerDatabase(DatabaseManager.java:2087)
    at com.goldencode.p2j.persist.DatabaseManager.initialize(DatabaseManager.java:1154)
    at com.goldencode.p2j.persist.Persistence.initialize(Persistence.java:1069)
    at com.goldencode.p2j.main.StandardServer$5.initialize(StandardServer.java:866)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:378)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:473)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:203)
    at sun.net.www.http.HttpClient.New(HttpClient.java:290)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:995)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:931)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:632)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1270)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1237)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:260)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1153)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1049)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:962)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150)
    at com.goldencode.util.XmlHelper.parse(XmlHelper.java:493)
    at com.goldencode.util.XmlHelper.parse(XmlHelper.java:416)
    at com.goldencode.p2j.persist.DatabaseManager.getBackingTableName(DatabaseManager.java:587)
    ... 11 more

#5 Updated by Constantin Asofiei over 10 years ago

The root cause is the same: the Hibernate's DTD is needed to parse the .hbm.xml files, but is not reachable. An initial solution would be to place hibernate DTD file in the server startup directory (i.e. testcases/simple/server) and change the DOCTYPE in the .hbm.xml file to this:

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "hibernate-mapping-3.0.dtd">

This will allow an offline server startup.

For conversion, change the hbm_dtd_node template in the schema/hibernate_templates.tpl to this:

  <ast-root name="hbm_dtd_node" terse="true" ast_class="com.goldencode.p2j.xml.XmlAst" >
    <ast id="0" type="DOCUMENT_TYPE_NODE" text="hibernate-mapping">
      <ast id="0" type="PUBLIC_ID" text="-//Hibernate/Hibernate Mapping DTD 3.0//EN" />
      <ast id="0" type="SYSTEM_ID" text="hibernate-mapping-3.0.dtd" />
    </ast>
  </ast-root>

The hibernate-mapping-3.0.dtd needs to be placed in the conversion startup folder (i.e. testcases/uast). This will allow DDL to be generated and the .hbm.xml files will target an offline DTD.

LE: hbm_dtd_node targets an offline file.

#6 Updated by Greg Shah over 10 years ago

  • Priority changed from Low to Normal
  • Subject changed from database conversion requires Internet connectivity to database conversion (and also server startup) requires Internet connectivity

#7 Updated by Stanislav Lomany over 10 years ago

  • Assignee set to Stanislav Lomany

Today hibernate site has gone to maintenance, so I did like Constantin suggested. Luckily I found hibernate-mapping-3.0.dtd in the hibernate distribution.

Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:632)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1270)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1237)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:260)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1153)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1049)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:962)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150)
    at com.goldencode.util.XmlHelper.parse(XmlHelper.java:493)
    at com.goldencode.util.XmlHelper.parse(XmlHelper.java:416)
    at com.goldencode.p2j.persist.DatabaseManager.getBackingTableName(DatabaseManager.java:587)

#8 Updated by Constantin Asofiei over 10 years ago

Added the hibernate-mapping-3.0.dtd file (in case hibernate.org site is inaccessible).

#9 Updated by Eric Faulhaber over 10 years ago

I have a fix for this that does not require copying the DTD anywhere. The DTD already is in the Hibernate jar file, we just needed to emit the proper DOCTYPE into the hbm.xml files. We omit the PUBLIC ID, and Hibernate is smart enough to resolve the SYSTEM ID from the classpath. We just have to be sure to use Hibernate's specialized entity resolver when we parse the files ourselves (which we already were doing in some places, but we missed one). I'll include the fix with my next update.

I'm not going to post the fix separately here, because I have unrelated changes in one of the files, and since this is not a critical issue, I don't want to separate everything out and go through the extra regression test effort, when I'm going to do it anyway for my other update. If you have offline problems before this fix is available, use the workaround mentioned above, but please remember to clean up your project once this fix is available. I'll update this issue when the fix is ready.

#10 Updated by Eric Faulhaber over 10 years ago

Actually, it is not even necessary to omit the PUBLIC ID. Only the code changes to use the entity resolver are needed.

#11 Updated by Eugenie Lyzenko over 10 years ago

Conversion on Windows virtual machine mode without networking causes the error:

...
Generating INDEX DDL for table xt_image...
Generating INDEX DDL for table xt_key...
Generating INDEX DDL for table xt_notes...
Generating INDEX DDL for table xt_print...
Generating INDEX DDL for table zone...
Reading merge DMO definitions...
ERROR:
java.lang.RuntimeException: ERROR!  Active Rule:
-----------------------
      RULE REPORT
-----------------------
Rule Type :   WALK
Source AST:  [ majic ] DATA_MODEL/ @0:0 {11600706666497}
Copy AST  :  [ majic ] DATA_MODEL/ @0:0 {11600706666497}
Condition :  hbmRoot = xml.parse(hbmFile, false, null)
Loop      :  false
--- END RULE REPORT ---

        at com.goldencode.p2j.pattern.PatternEngine.run(PatternEngine.java:864)
        at com.goldencode.p2j.convert.ConversionDriver.processTrees(ConversionDriver.java:976)
        at com.goldencode.p2j.convert.ConversionDriver.generateDDL(ConversionDriver.java:739)
        at com.goldencode.p2j.convert.ConversionDriver.middle(ConversionDriver.java:660)
        at com.goldencode.p2j.convert.ConversionDriver.main(ConversionDriver.java:1750)
Caused by: java.net.UnknownHostException: hibernate.sourceforge.net
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at java.net.Socket.connect(Socket.java:528)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
        at sun.net.www.http.HttpClient.New(HttpClient.java:308)
        at sun.net.www.http.HttpClient.New(HttpClient.java:326)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:996)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:850)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:637)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1290)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1257)
        at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:262)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1162)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1050)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:964)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150)
        at com.goldencode.util.XmlHelper.parse(XmlHelper.java:494)
        at com.goldencode.util.XmlHelper.parse(XmlHelper.java:332)
        at com.goldencode.p2j.xml.XmlPatternWorker$Library.parse(XmlPatternWorker.java:244)
        at com.goldencode.expr.CE3146.execute(Unknown Source)
        at com.goldencode.expr.Expression.execute(Expression.java:323)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
        at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:393)
        at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:646)
        at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1097)
        at com.goldencode.expr.CE3129.execute(Unknown Source)
        at com.goldencode.expr.Expression.execute(Expression.java:323)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
        at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
        at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:413)
        at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
        at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
        at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
        at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
        at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
        at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:413)
        at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
        at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
        at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:393)
        at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:646)
        at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1097)
        at com.goldencode.expr.CE3112.execute(Unknown Source)
        at com.goldencode.expr.Expression.execute(Expression.java:323)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
        at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:393)
        at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:646)
        at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1097)
        at com.goldencode.expr.CE3111.execute(Unknown Source)
        at com.goldencode.expr.Expression.execute(Expression.java:323)
        at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
        at com.goldencode.p2j.pattern.RuleContainer.apply(RuleContainer.java:531)
        at com.goldencode.p2j.pattern.RuleSet.apply(RuleSet.java:50)
        at com.goldencode.p2j.pattern.PatternEngine.apply(PatternEngine.java:1325)
        at com.goldencode.p2j.pattern.PatternEngine.processAst(PatternEngine.java:1244)
        at com.goldencode.p2j.pattern.PatternEngine.processAst(PatternEngine.java:1192)
        at com.goldencode.p2j.pattern.PatternEngine.run(PatternEngine.java:830)
        ... 4 more
C:\work64\majic>

#12 Updated by Eugenie Lyzenko almost 9 years ago

Majic changes for review to fix build failure from sourceforge down.

I have found 3 files:

srcnew/java/aero/timco/majic/dmo/majic/impl/EdiInvoiceImpl.hbm.xml
srcnew/java/aero/timco/majic/dmo/majic/impl/EdiVoucherImpl.hbm.xml
srcnew/java/aero/timco/majic/dmo/_temp/impl/LmsTempRmployeeImpl.hbm.xml

Testing the changes.

#13 Updated by Eric Faulhaber almost 9 years ago

  • Assignee deleted (Stanislav Lomany)

Currently, this is what http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd returns:

"The sourceforge.net website is temporarily in static offline mode.
Only a very limited set of project pages are available until the main website returns to service."

As a result, we see this during conversion:

...
     [java] Generating INDEX DDL for table work_unit_code...
     [java] Generating INDEX DDL for table xt_function...
     [java] Generating INDEX DDL for table xt_image...
     [java] Generating INDEX DDL for table xt_key...
     [java] Generating INDEX DDL for table xt_notes...
     [java] Generating INDEX DDL for table xt_print...
     [java] Generating INDEX DDL for table zone...
     [java] Reading merge DMO definitions...
     [java] EXPRESSION EXECUTION ERROR:
     [java] ---------------------------
     [java] hbmRoot = xml.parse(hbmFile, false, null)
     [java]               ^  { Server returned HTTP response code: 503 for URL: http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd }
     [java] ---------------------------
     [java] EXPRESSION EXECUTION ERROR:
     [java] ---------------------------
     [java] dmoDef = execLib('readMergeDMODefinition', dmoClass, classElem)
     [java]          ^  { Expression execution error @1:15 }
     [java] ---------------------------
     [java] EXPRESSION EXECUTION ERROR:
     [java] ---------------------------
     [java] allMergeDMOs = execLib("readAllMergeDMODefinition", dbName)
     [java]                ^  { Expression execution error @1:10 }
     [java] ---------------------------
     [java] EXPRESSION EXECUTION ERROR:
     [java] ---------------------------
     [java] execLib('registerMergeDMOs', pkgPath, handler)
     [java] ^  { Expression execution error @1:16 }
     [java] ---------------------------
     [java] Elapsed job time:  00:00:00.900
     [java] ERROR:
     [java] java.lang.RuntimeException: ERROR!  Active Rule:
     [java] -----------------------
     [java]       RULE REPORT
     [java] -----------------------
     [java] Rule Type :   WALK
     [java] Source AST:  [ majic ] DATA_MODEL/ @0:0 {11596411699201}
     [java] Copy AST  :  [ majic ] DATA_MODEL/ @0:0 {11596411699201}
     [java] Condition :  hbmRoot = xml.parse(hbmFile, false, null)
     [java] Loop      :  false
     [java] --- END RULE REPORT ---
     [java]
     [java]
     [java]
     [java]     at com.goldencode.p2j.pattern.PatternEngine.run(PatternEngine.java:1007)
     [java]     at com.goldencode.p2j.convert.ConversionDriver.processTrees(ConversionDriver.java:1018)
     [java]     at com.goldencode.p2j.convert.ConversionDriver.generateDDL(ConversionDriver.java:754)
     [java]     at com.goldencode.p2j.convert.ConversionDriver.middle(ConversionDriver.java:672)
     [java]     at com.goldencode.p2j.convert.ConversionDriver.main(ConversionDriver.java:1793)
     [java] Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:1
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:434)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
     [java]     at com.goldencode.p2j.pattern.RuleContainer.apply(RuleContainer.java:530)
     [java]     at com.goldencode.p2j.pattern.RuleSet.apply(RuleSet.java:50)
     [java]     at com.goldencode.p2j.pattern.PatternEngine.apply(PatternEngine.java:1495)
     [java]     at com.goldencode.p2j.pattern.PatternEngine.processAst(PatternEngine.java:1414)
     [java]     at com.goldencode.p2j.pattern.PatternEngine.processAst(PatternEngine.java:1362)
     [java]     at com.goldencode.p2j.pattern.PatternEngine.run(PatternEngine.java:975)
     [java]     ... 4 more
     [java] Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:16
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:434)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
     [java]     at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:395)
     [java]     at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:661)
     [java]     at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1147)
     [java]     at com.goldencode.expr.CE3780.execute(Unknown Source)
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:341)
     [java]     ... 11 more
     [java] Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:10
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:434)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
     [java]     at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
     [java]     at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:413)
     [java]     at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
     [java]     at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
     [java]     at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
     [java]     at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
     [java]     at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
     [java]     at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:413)
     [java]     at com.goldencode.p2j.pattern.Rule.executeActions(Rule.java:640)
     [java]     at com.goldencode.p2j.pattern.Rule.coreProcessing(Rule.java:609)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:440)
     [java]     at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:395)
     [java]     at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:661)
     [java]     at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1147)
     [java]     at com.goldencode.expr.CE3781.execute(Unknown Source)
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:341)
     [java]     ... 17 more
     [java] Caused by: com.goldencode.expr.ExpressionException: Expression execution error @1:15
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:434)
     [java]     at com.goldencode.p2j.pattern.Rule.apply(Rule.java:401)
     [java]     at com.goldencode.p2j.pattern.NamedFunction.execute(NamedFunction.java:395)
     [java]     at com.goldencode.p2j.pattern.AstSymbolResolver.execute(AstSymbolResolver.java:661)
     [java]     at com.goldencode.p2j.pattern.CommonAstSupport$Library.execLib(CommonAstSupport.java:1147)
     [java]     at com.goldencode.expr.CE3798.execute(Unknown Source)
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:341)
     [java]     ... 38 more
     [java] Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
     [java]     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1626)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:637)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1290)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1257)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:263)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1164)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1050)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:964)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
     [java]     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
     [java]     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
     [java]     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
     [java]     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
     [java]     at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
     [java]     at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
     [java]     at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:150)
     [java]     at com.goldencode.util.XmlHelper.parse(XmlHelper.java:495)
     [java]     at com.goldencode.util.XmlHelper.parse(XmlHelper.java:332)
     [java]     at com.goldencode.p2j.xml.XmlPatternWorker$Library.parse(XmlPatternWorker.java:307)
     [java]     at com.goldencode.expr.CE3815.execute(Unknown Source)
     [java]     at com.goldencode.expr.Expression.execute(Expression.java:341)
     [java]     ... 44 more

There are a few problems here...

First, some hand-written .hbm.xml files reference an obsolete DTD URI (http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd). The correct reference is http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd. We fixed this in the schema conversion some time ago, but we missed editing these hand-written documents.

Fixing that (as detailed in note 12) is the quickest way to resolve this, however, it is just a workaround. The hibernate.org site is more reliable, but we don't want to have to go out over the Internet at all to pull in the DTD for these XML documents. We already have it in the classpath.

I think the best way to do that is to add an API to XMLPatternWorker$Library which exposes XmlHelper.parse(InputStream in, boolean validate, EntityResolver resolver, ErrorHandler handler). Then, find all the places where we parse these .hbm.xml files in the conversion and use this API, passing an instance of org.hibernate.internal.util.xml.DTDEntityResolver for the third parameter. This will allow the XML parser to resolve the DTD from the classpath instead of the Internet. We do this at runtime already (see note 9), during server startup.

#14 Updated by Eric Faulhaber almost 8 years ago

  • Subject changed from database conversion (and also server startup) requires Internet connectivity to database conversion requires Internet connectivity

The server startup issue was addressed per notes 9-10, so I'm changing the subject back to reflect that this is only a conversion issue now.

#15 Updated by Eric Faulhaber almost 8 years ago

My last conversion of the customer's server project was done offline. There were no errors. I don't think this is a problem anymore.

Has anyone watching had a problem with this lately? If not, I'm planning on closing this issue.

#16 Updated by Paul E almost 8 years ago

Fine by me.

I was only concerned about this when it seemed it was a runtime issue too. Conversion can require internet connectivity from our perspective.

#17 Updated by Greg Shah over 7 years ago

  • Target version deleted (24)
  • Status changed from New to Closed
  • % Done changed from 0 to 100

Also available in: Atom PDF