카테고리 없음
[E] org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
mxnxeonx
2023. 3. 23. 10:28
728x90
728x90
Linux Ubuntu 18.04, Jeus8, ProObject7 환경에서 후행 서비스 구현 중 다음과 같은 에러가 발생하였다.
[2023.03.23 10:15:52.722] [Thread : threadpool.System-1 [POSERVER-45]] [SEVERE] [ProObject7] Failed to parse system application information, setting default values...
<<__Exception__>>
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:578)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:264)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:204)
at com.tmax.proobject.engine.ProObjectBootLoader.loadConfiguration(ProObjectBootLoader.java:548)
at com.tmax.proobject.engine.system.application.SystemApplicationManager.loadSystemMeta(SystemApplicationManager.java:32)
at com.tmax.proobject.engine.system.BuiltinApplicationManager.getProObjectApplicationMeta(BuiltinApplicationManager.java:194)
at com.tmax.proobject.engine.system.BuiltinApplicationManager.create(BuiltinApplicationManager.java:185)
at com.tmax.proobject.engine.application.ApplicationManager.boot(ApplicationManager.java:175)
at com.tmax.proobject.engine.ProObjectBootLoader.initializeApplication(ProObjectBootLoader.java:657)
at com.tmax.proobject.engine.ProObjectBootLoader.bootProObject(ProObjectBootLoader.java:376)
at com.tmax.proobject.engine.ProObjectBootLoader.boot(ProObjectBootLoader.java:177)
at com.tmax.proobject.engine.event.channel.eventhandler.httpservlet.ProObjectHttpServlet.init(ProObjectHttpServlet.java:72)
at com.tmax.proobject.endpoint.ProObjectHttpEndpointServlet.init(ProObjectHttpEndpointServlet.java:52)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)
at jeus.servlet.loader.ServletReloader.doInitInstance(ServletReloader.java:63)
at jeus.servlet.loader.ContainerManagedInstanceReloader.checkAndInitInstance(ContainerManagedInstanceReloader.java:79)
at jeus.servlet.loader.ContainerManagedInstanceReloader.getInstance(ContainerManagedInstanceReloader.java:60)
at jeus.servlet.loader.ServletReloader.getServlet(ServletReloader.java:44)
at jeus.servlet.engine.ServletWrapper.preload(ServletWrapper.java:90)
at jeus.servlet.engine.ServletManager.preloadServletWrapper(ServletManager.java:454)
at jeus.servlet.engine.ServletManager.preloadServlets(ServletManager.java:447)
at jeus.servlet.engine.Context.distributeInternal(Context.java:1498)
at jeus.servlet.engine.Context.postDistribute2(Context.java:1304)
at jeus.servlet.deployment.WebModuleDeployer.postDistribute2(WebModuleDeployer.java:238)
at jeus.deploy.deployer.AbstractDeployer.distribute2(AbstractDeployer.java:296)
at jeus.deploy.deployer.AbstractDeployer.distribute(AbstractDeployer.java:240)
at jeus.deploy.deployer.DeploymentAdministrator.distribute(DeploymentAdministrator.java:245)
at jeus.server.Server.innerSingleDistribute(Server.java:2756)
at jeus.server.Server.access$1700(Server.java:219)
at jeus.server.Server$InnerDistributeAppTask.run(Server.java:2616)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at jeus.util.pool.ManagedThreadPoolImpl$1.run(ManagedThreadPoolImpl.java:81)
at jeus.util.pool.ManagedThreadPoolImpl$WorkWrapper.run(ManagedThreadPoolImpl.java:279)
at jeus.util.pool.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:1299)
at jeus.util.pool.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:1343)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:258)
... 37 more
<<__!Exception__>>
주요 문장만 고르면, 'XML 문서에서 element에 문제가 발생했다' 정도로 해석이 가능하다.
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.]
Caused by: org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
해결 방법
연관된(해당 에러가 발생하는 컴파일 지점) XML 문서를 찾아보니 이렇게 되어 있었는데,
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns13:application xmlns:ns16="http://www.tmax.co.kr/proobject/taskobject" xmlns:ns17="http://www.tmax.co.kr/proobject/jobobject" xmlns:ns14="http://www.tmax.co.kr/proobject/serviceobject-automatic" xmlns:ns15="http://www.tmax.co.kr/proobject/sourcecode" xmlns:ns18="http://www.example.org/externalObjectConfig" xmlns:ns19="http://www.tmax.co.kr/proobject/contents" xmlns:ns21="http://www.tmax.co.kr/proobject/siteConfig" xmlns:ns9="http://www.tmax.co.kr/proobject/message" xmlns:ns22="http://www.tmax.co.kr/proobject/property" xmlns:ns23="http://www.tmax.co.kr/proobject/serverConfig" xmlns:ns5="http://www.tmax.co.kr/proobject/serviceobject" xmlns:ns12="http://www.tmax.co.kr/proobject/messagebundle" xmlns:ns6="http://www.tmax.co.kr/proobject/bizobject" xmlns:ns13="http://www.tmax.co.kr/proobject/application/runtime" xmlns:ns7="http://www.tmax.co.kr/proobject/dataobjectfactory" xmlns:ns10="http://www.tmax.co.kr/proobject/dto" xmlns:ns20="http://www.tmax.co.kr/proobject/probuilder_config" xmlns:ns8="http://www.tmax.co.kr/proobject/dataobject" xmlns:ns11="http://www.tmax.co.kr/proobject/servicegroup" xmlns:ns2="http://www.tmax.co.kr/proobject/resource" xmlns:ns4="http://www.tmax.co.kr/proobject/flow" xmlns:ns3="http://www.tmax.co.kr/proobject/mapping">
<ns13:name>proobject</ns13:name>
</ns13:application>
<!-- 후행 서비스 -->
<ns13:deferred-service>
<ns13:enable>true</ns13:enable>
<ns13:deferred-queue-name>deferredQueue</ns13:deferred-queue-name>
<ns13:request-table>po_deferred</ns13:request-table>
<ns13:history-table>po_deferred</ns13:history-table>
<ns13:enable-deferredId>true</ns13:enable-deferredId>
<ns13:deferred-date-format>yyyyMMdd</ns13:deferred-date-format>
</ns13:deferred-service>
후행 서비스 태그 <ns13:deferred-service>가 어플리케이션 태그 <ns13:application> 안으로 들어가야하나보다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns13:application xmlns:ns16="http://www.tmax.co.kr/proobject/taskobject" xmlns:ns17="http://www.tmax.co.kr/proobject/jobobject" xmlns:ns14="http://www.tmax.co.kr/proobject/serviceobject-automatic" xmlns:ns15="http://www.tmax.co.kr/proobject/sourcecode" xmlns:ns18="http://www.example.org/externalObjectConfig" xmlns:ns19="http://www.tmax.co.kr/proobject/contents" xmlns:ns21="http://www.tmax.co.kr/proobject/siteConfig" xmlns:ns9="http://www.tmax.co.kr/proobject/message" xmlns:ns22="http://www.tmax.co.kr/proobject/property" xmlns:ns23="http://www.tmax.co.kr/proobject/serverConfig" xmlns:ns5="http://www.tmax.co.kr/proobject/serviceobject" xmlns:ns12="http://www.tmax.co.kr/proobject/messagebundle" xmlns:ns6="http://www.tmax.co.kr/proobject/bizobject" xmlns:ns13="http://www.tmax.co.kr/proobject/application/runtime" xmlns:ns7="http://www.tmax.co.kr/proobject/dataobjectfactory" xmlns:ns10="http://www.tmax.co.kr/proobject/dto" xmlns:ns20="http://www.tmax.co.kr/proobject/probuilder_config" xmlns:ns8="http://www.tmax.co.kr/proobject/dataobject" xmlns:ns11="http://www.tmax.co.kr/proobject/servicegroup" xmlns:ns2="http://www.tmax.co.kr/proobject/resource" xmlns:ns4="http://www.tmax.co.kr/proobject/flow" xmlns:ns3="http://www.tmax.co.kr/proobject/mapping">
<ns13:name>proobject</ns13:name>
<!-- 후행 서비스 -->
<ns13:deferred-service>
<ns13:enable>true</ns13:enable>
<ns13:deferred-queue-name>deferredQueue</ns13:deferred-queue-name>
<ns13:request-table>po_deferred</ns13:request-table>
<ns13:history-table>po_deferred</ns13:history-table>
<ns13:enable-deferredId>true</ns13:enable-deferredId>
<ns13:deferred-date-format>yyyyMMdd</ns13:deferred-date-format>
</ns13:deferred-service>
</ns13:application>
위처럼 변경해주니 해결 완료. 이제 ProObject 부팅시 해당 에러는 발생하지 않는다.
728x90
320x100