phax / phase4

phase4 - AS4 client and server for integration into existing systems. Specific support for Peppol and CEF eDelivery built-in.
Apache License 2.0
154 stars 47 forks source link

no object DCH for MIME type application/soap+xml;charset=UTF-8 #23

Closed AlexandruCiobanu closed 4 years ago

AlexandruCiobanu commented 4 years ago

Hi Phillip,

I am getting the above error when running the as4 peppol client within a java software called mirth that likely starts it in a separate thread while probably injecting some of its libraries. Any idea what I could do?

What I tried: 1 -> Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); 2 -> `MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); mc.addMailcap("message/rfc822;; x-java-content- handler=com.sun.mail.handlers.message_rfc822");

Error below: [2019-11-21 04:06:42,635] ERROR (com.helger.phase4.peppol.Phase4PeppolSender:225): Internal error sending AS4 message to 'xxxxxxxxxx' javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/soap+xml;charset=UTF-8 at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:896) at javax.activation.DataHandler.writeTo(DataHandler.java:317) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1574) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:948) at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:538) at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:103) at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:889) at javax.activation.DataHandler.writeTo(DataHandler.java:317) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1574) at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1840) at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1816) at com.helger.phase4.http.HttpMimeMessageEntity.writeTo(HttpMimeMessageEntity.java:91) at com.helger.phase4.client.AbstractAS4Client._createRepeatableEntity(AbstractAS4Client.java:544) at com.helger.phase4.client.AbstractAS4Client.sendMessageWithRetries(AbstractAS4Client.java:637) at com.helger.phase4.peppol.Phase4PeppolSender._sendHttp(Phase4PeppolSender.java:193) at com.helger.phase4.peppol.Phase4PeppolSender._sendAS4Message(Phase4PeppolSender.java:506) at com.helger.phase4.peppol.Phase4PeppolSender.access$100(Phase4PeppolSender.java:98) at com.helger.phase4.peppol.Phase4PeppolSender$Builder.sendMessage(Phase4PeppolSender.java:1016) at com.as4.sender.AS4PEPPOLSender.send(AS4PEPPOLSender.java:237) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1479) at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815) at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:405) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3508) at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120)

AlexandruCiobanu commented 4 years ago

I suspect somehow the mime.types do not get loaded

AlexandruCiobanu commented 4 years ago

The solution was to pickup mime.types from ph-mail and place it in java lib folder. I am certain this has everything to do with the way the class gets executed in a new thread by Mirth Connect.

phax commented 4 years ago

Thanks for your feedback. Nevertheless I will investigate and check if there is an automatic way to check and if necessary ensure that it is loaded....

phax commented 4 years ago

Just for reference, here's some news.

phax commented 4 years ago

With the update to ph-web 9.1.5 in one of the last commits, FileTypeMap.setDefaultFileTypeMap(new PhMimetypesFileTypeMap()); can be done... Is anyway part of the upcoming 0.9.6 release