Closed sviscapi closed 3 years ago
Hi Samuel, This may be a temporary problem, so please do retry. The address for the endpoint is certainly correct, so as long as you can reach the internet it should be reachable.
You may have issues if you're behind a proxy (which your IT Support team would be able to advise on), in which case you can configure the proxy details via the 'Proxy settings' button.
If the problems do persist then please can you provide a little more information about your operating environment - which operating system you're using, which java version, which DROID version (i.e. bundled with java SDK or unbundled).
David
I get the same issue on my dev build of DROID. I get a 301 error - moved permanently.
Running on Pop OS (Ubuntu derivative), OpenJDK 11 most recent update. Network has no proxies, just a standard home broadband connection that's working fine. I don't think the problem is at my end though, given other reports of the same issue from a release build. I'm running off the latest master code of DROID from GitHub.
I also had to disable the PronomSignatureServiceTest, as that now fails too for the same reason. Another issue has been raised to make this test independent of the environment.
I'll also add that signature updates did work in DROID 6.5 when it was released, and I've had no problems updating signatures until a week or so ago. I suspect this is a problem at the TNA network end.
Thanks Matt, ahh I think I see the problem here.
Can you please try https endpoints? https://www.nationalarchives.gov.uk/pronom/service.asmx https://www.nationalarchives.gov.uk/pronom/container-signature.xml
David
I'm afraid it doesn't seem to have fixed it in latest build of Master. It's still getting a 301 moved permanently error still, although the actual Exception seems to be generated because the PRONOM service is returning HTML unexpectedly (rather than a SOAP message I guess).
I've followed it in the debugger - it fails trying to contact PRONOM service (so not a container signature file issue). The endpoint it uses is the correct http://www.nationalarchives.gov.uk/pronom/service.asmx
.
Here's the standard DROID setings, which match the URL endpoints you gave:
Here's a stack trace from running DROID and selecting signature update:
2021-10-27T10:10:51,070 INFO [AWT-EventQueue-0] DroidMainFrame:289 - Starting DROID.
2021-10-27T10:10:56,579 INFO [AWT-EventQueue-0] ProfileManagerImpl:119 - Creating profile: 1635325856579
2021-10-27T10:10:56,643 INFO [SwingWorker-pool-3-thread-1] ProfileManagerImpl:199 - Opening profile: 1635325856579
2021-10-27T10:10:57,656 WARN [SwingWorker-pool-3-thread-1] DriverDataSource:68 - Registered driver with driverClassName=org.apache.derby.jdbc.EmbeddedDriver was not found, trying direct instantiation.
2021-10-27T10:11:01,756 INFO [AWT-EventQueue-0] ProfileInstance:319 - Attempting state change [INITIALISING] to [VIRGIN]
2021-10-27T10:11:02,159 WARN [SwingWorker-pool-3-thread-2] PhaseInterceptorChain:468 - Interceptor for {http://pronom.nationalarchives.gov.uk}PronomServiceService#{http://pronom.nationalarchives.gov.uk}getSignatureFileVersionV1 has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: <html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>
at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:97) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:831) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1697) [cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1571) [cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371) [cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671) [cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314) [cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) [cxf-rt-frontend-simple-3.4.4.jar:3.4.4]
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140) [cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy65.getSignatureFileVersionV1(Unknown Source) [?:?]
at uk.gov.nationalarchives.droid.signature.PronomSignatureService.getLatestVersion(PronomSignatureService.java:144) [classes/:?]
at uk.gov.nationalarchives.droid.signature.SignatureManagerImpl.getLatestSignatureFiles(SignatureManagerImpl.java:317) [classes/:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.doInBackground(CheckSignatureUpdateAction.java:87) [classes/:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.doInBackground(CheckSignatureUpdateAction.java:55) [classes/:?]
at javax.swing.SwingWorker$1.call(SwingWorker.java:304) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at javax.swing.SwingWorker.run(SwingWorker.java:343) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
2021-10-27T10:11:02,284 WARN [AWT-EventQueue-0] CheckSignatureUpdateAction:118 - javax.xml.ws.soap.SOAPFaultException: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: <html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>
java.util.concurrent.ExecutionException: javax.xml.ws.soap.SOAPFaultException: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: <html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
at javax.swing.SwingWorker.get(SwingWorker.java:613) ~[?:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.done(CheckSignatureUpdateAction.java:114) [classes/:?]
at javax.swing.SwingWorker$5.run(SwingWorker.java:750) [?:?]
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:847) [?:?]
at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112) [?:?]
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857) [?:?]
at javax.swing.Timer.fireActionPerformed(Timer.java:317) [?:?]
at javax.swing.Timer$DoPostEvent.run(Timer.java:249) [?:?]
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) [?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) [?:?]
at java.awt.EventQueue$4.run(EventQueue.java:721) [?:?]
at java.awt.EventQueue$4.run(EventQueue.java:715) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) [?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:740) [?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) [?:?]
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) [?:?]
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) [?:?]
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) [?:?]
at java.awt.Dialog.show(Dialog.java:1070) [?:?]
at java.awt.Component.show(Component.java:1716) [?:?]
at java.awt.Component.setVisible(Component.java:1663) [?:?]
at java.awt.Window.setVisible(Window.java:1031) [?:?]
at java.awt.Dialog.setVisible(Dialog.java:1005) [?:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.start(CheckSignatureUpdateAction.java:102) [classes/:?]
at uk.gov.nationalarchives.droid.gui.DroidMainFrame.updateNowMenuItemActionPerformed(DroidMainFrame.java:1286) [classes/:?]
at uk.gov.nationalarchives.droid.gui.DroidMainFrame.access$3700(DroidMainFrame.java:123) [classes/:?]
at uk.gov.nationalarchives.droid.gui.DroidMainFrame$39.actionPerformed(DroidMainFrame.java:940) [classes/:?]
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) [?:?]
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) [?:?]
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) [?:?]
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) [?:?]
at javax.swing.AbstractButton.doClick(AbstractButton.java:369) [?:?]
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1020) [?:?]
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1064) [?:?]
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) [?:?]
at java.awt.Component.processMouseEvent(Component.java:6635) [?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3342) [?:?]
at java.awt.Component.processEvent(Component.java:6400) [?:?]
at java.awt.Container.processEvent(Container.java:2263) [?:?]
at java.awt.Component.dispatchEventImpl(Component.java:5011) [?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2321) [?:?]
at java.awt.Component.dispatchEvent(Component.java:4843) [?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) [?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) [?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) [?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2307) [?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2772) [?:?]
at java.awt.Component.dispatchEvent(Component.java:4843) [?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) [?:?]
at java.awt.EventQueue$4.run(EventQueue.java:721) [?:?]
at java.awt.EventQueue$4.run(EventQueue.java:715) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) [?:?]
at java.awt.EventQueue$5.run(EventQueue.java:745) [?:?]
at java.awt.EventQueue$5.run(EventQueue.java:743) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) [?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) [?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
Caused by: javax.xml.ws.soap.SOAPFaultException: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: <html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>
at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:195) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4]
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy65.getSignatureFileVersionV1(Unknown Source) ~[?:?]
at uk.gov.nationalarchives.droid.signature.PronomSignatureService.getLatestVersion(PronomSignatureService.java:144) ~[classes/:?]
at uk.gov.nationalarchives.droid.signature.SignatureManagerImpl.getLatestSignatureFiles(SignatureManagerImpl.java:317) ~[classes/:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.doInBackground(CheckSignatureUpdateAction.java:87) ~[classes/:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.doInBackground(CheckSignatureUpdateAction.java:55) ~[classes/:?]
at javax.swing.SwingWorker$1.call(SwingWorker.java:304) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at javax.swing.SwingWorker.run(SwingWorker.java:343) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: org.apache.cxf.interceptor.Fault: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: <html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>
at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:97) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:831) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1697) ~[cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1571) ~[cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371) ~[cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671) ~[cxf-rt-transports-http-3.4.4.jar:3.4.4]
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314) ~[cxf-core-3.4.4.jar:3.4.4]
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) ~[cxf-rt-frontend-simple-3.4.4.jar:3.4.4]
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy65.getSignatureFileVersionV1(Unknown Source) ~[?:?]
at uk.gov.nationalarchives.droid.signature.PronomSignatureService.getLatestVersion(PronomSignatureService.java:144) ~[classes/:?]
at uk.gov.nationalarchives.droid.signature.SignatureManagerImpl.getLatestSignatureFiles(SignatureManagerImpl.java:317) ~[classes/:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.doInBackground(CheckSignatureUpdateAction.java:87) ~[classes/:?]
at uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction.doInBackground(CheckSignatureUpdateAction.java:55) ~[classes/:?]
at javax.swing.SwingWorker$1.call(SwingWorker.java:304) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at javax.swing.SwingWorker.run(SwingWorker.java:343) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]
2021-10-27T10:11:13,562 INFO [AWT-EventQueue-0] ProfileManagerImpl:183 - Closing profile: 1635325856579
2021-10-27T10:11:13,658 INFO [AWT-EventQueue-0] DroidMainFrame:1603 - Closing DROID.
Process finished with exit code 0
Thanks for the detailed response Matt. Have you tried the https endpoint for the signature update? https://www.nationalarchives.gov.uk/pronom/service.asmx
I get valid web pages if I connect to that URL with a browser.
is DROID itself still misbehaving? I can replicate the 301 with DROID under the http: address but https: seems to be behaving as expected for me
Ah. Well the standard config for DROID is using HTTP, not HTTPS., as we can see in the config screenshot. I'll try again once I'm back, out for a bit.
I guess http is no longer supported. Clearly used to work as that's the default configuration.
Of course, much better to use HTTPS, might need to update DROID default config, and maybe post some instructions for existing users if that's the case.
HTTP seems to be the issue. Works OK with HTTPS, but not HTTP (which is still the default config in DROID).
Did TNA just stop supporting plain HTTP recently? May have a bunch of people who'll need to update their preferences.
I notice if you use the HTTP URL with a browser, you are redirected to an HTTPS URL. I wonder if the code just expects HTTP to work, and can't handle a redirect to HTTPS URL.
There was a recent website migration that appears to have had a few unintended consequences. If deprecating http:// I'd prefer to do it a bit more gracefully, including a new DROID release with correct defaults first. I'm seeing if we can get the http:// endpoint back up...
Dear all,
Thank you very much for your help, really appreciated :)
The https workaround seems to be working for my colleague. She had to check the "use an HTTP proxy server for update" box to make it work though.
Best regards,
Samuel, for Conseil Départemental de l'Hérault herault.fr
@sviscapi glad the HTTPS address worked for you as a workaround. The HTTP issue has now also been resolved so you should be able to use either address for the time-being. With the next DROID release we'll formally announce an intention to deprecate the HTTP endpoint.
CC @nishihatapalmer - would you like to verify that your tests etc are now working again and if so we can close this ticket. Thanks also for your help in investigating this.
I can confirm that tests now pass.
Dear Droid team,
A colleague of mine just told me about some issues when trying to update the signatures in Droid 6.5:
Preferences are set as per the screenshot below:
What are we doing wrong ?
Best regards,
Samuel, for Conseil Départemental de l'Hérault (France) herault.fr