Haj Haj - 2 months ago 11
reST (reStructuredText) Question

error while deploying rest web service

I am new to rest web service.

Picked the example from http://www.mkyong.com/webservices/jax-rs/jersey-hello-world-example/

While hitting the URL

http://localhost:8080/RESTfulExample/rest/hello/mkyong
I am getting this strange error :

enter image description here

And the details are :

PLATFORM VERSION INFO
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.1022
System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100)
clr.dll : 4.0.30319.1022 (RTMGDR.030319-1000)
dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfshim.dll : 4.0.31106.0 (Main.031106-0000)

SOURCES
Deployment url : http://localhost:8080/rs1/rest/hello/hi,

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://localhost:8080/rs1/rest/hello/hi, resulted in exception. Following failure messages were detected:
+ Exception reading manifest from http://localhost:8080/rs1/rest/hello/hi,: the manifest may not be valid or the file could not be opened.
+ Data at the root level is invalid. Line 1, position 1.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* [9/16/2014 11:30:26 AM] : Activation of `http://localhost:8080/rs1/rest/hello/hi`, has started.

ERROR DETAILS
Following errors were detected during this operation.
* [9/16/2014 11:30:26 AM] System.Deployment.Application.InvalidDeploymentException (ManifestParse)
- Exception reading manifest from http://localhost:8080/rs1/rest/hello/hi,: the manifest may not be valid or the file could not be opened.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri)
at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
--- Inner Exception ---
System.Xml.XmlException
- Data at the root level is invalid. Line 1, position 1.
- Source: System.Xml
- Stack trace:
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Deployment.Application.ManifestValidatingReader.XmlFilteredReader.Read()
at System.Xml.XmlCharCheckingReader.Read()
at System.Xml.XsdValidatingReader.Read()
at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri)

COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.


I am using eclipse kepler and apache tomcat 6

Answer

I am also experiencing this with IE. I am using Tomcat 8, jersey for REST with an LDAP security restraint which directs the user to a login page. The login page displays fine, but after authentication, this error persists. Our user base is largely IE users so using Chrome, firefox etc is not really an option (although the site works as expected on them).

Just a note that adding the site to 'Trusted Sites' in IE gets rid of the problem.

A bit of digging into the log file makes it appear as if IE is trying to launch an application (ClickOnce) and expecting a manifest file. This is baffling and perhaps misleading as there is no application at our site. Any help with this is greatly appreciated.

UPDATE: I managed to solve this issue. After reviewing my domain classes it occurred to me that I was not specifying a MIME type for the response. Adding an @Produces("text/html") annotation to my domain (rest) class methods solved the problem:

Example:

@GET
@Produces("text/html")
public Response welcome()
{
return Response.ok("This should now work in IE").build();
}

I guess if IE does not specifically get this mimetype in the response header it assumes you are attempting to deliver an application (ClickOnce). I wish IE would be more like Chrome or Firefox.