cancel
Showing results for 
Search instead for 
Did you mean: 

Creating new File via KM Java API

Former Member
0 Kudos

Hello All,

I have a problem by creating a new ressource via the java api of the km. The szenario is the following one:i create a picture dynamically with java in the application after generating the picture i write it into en outputstream and want to save it over the km java api into a special folder in the km. The file appears in the km correctly but if i try to open it or to download it i get an failure, most of the time an internal 500, so the file seems to be corrupt.

At the next step i tried it with an definitily not corrputed picture, by reading this on into an fileinputstream and pass this inputstream over to the km, but still the same issue. The file is there but i cant open it.

Here are the lines of code for access km and create the ressource:




public static void writeFileIntoKM (InputStream file, String fileName) {
		
		
		RID pathRID = RID.getRID("/documents/OMDOCSPACE/lab/ActivityRecorder"); 	
		try {
			
			IUser serviceUser = WPUMFactory.getServiceUserFactory().getServiceUser("cmadmin_service");

			ResourceContext resourseContext = new ResourceContext(serviceUser);
			
			IResourceFactory resourseFactory = com.sapportals.wcm.repository.ResourceFactory.getInstance();
			
			ICollection collection = (ICollection)resourseFactory.getResource(pathRID, resourseContext);
			//Read the File
			InputStream stream = file;
			String resourceName = fileName;
			//KM Content
			Content cont = new Content(stream,"image/png",-1,null);
			//create a file in above mentioned path in KM
			com.sapportals.wcm.repository.IResource new_resource = (com.sapportals.wcm.repository.IResource)collection.createResource(resourceName, null, cont);
			
		} catch (ResourceException e) {
			e.printStackTrace();
		} catch (UserManagementException e) {
			e.printStackTrace();
		} catch (ContentException e) {
			e.printStackTrace();
		}	
	}

Has anybody an idea what i'm doing wrong?

Best regards,

Andre

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi,

have you tried, to upload an image directly with the Standard KM UI ?

best regards,

timo

Former Member
0 Kudos

Hmm okay after trying to upload an image via the km ui, the ui says the file is empty and in the default trace there is an classNotFoundException thrown (see below, because the exception message is destroying the hole format).

Is there an special library missing on the application server or some missconfiguration was done in the portal?

Best Regards and Thy to all so far for helping me,

Andre

Former Member
0 Kudos

Could not get rendererClass for IMetaName <broad:new> : and DisplayMode : create ;java.lang.ClassNotFoundException: com.sap.ip.bi.broadcasting.PropertyRendererNew

at com.sapportals.wcm.crt.CrtClassLoaderRegistry.findClass(CrtClassLoaderRegistry.java:176)

at java.lang.ClassLoader.loadClass(ClassLoader.java:289)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:219)

at com.sapportals.wcm.control.util.PropertyRenderUtil.getRenderer(PropertyRenderUtil.java:443)

at com.sapportals.wcm.control.util.propertystructure.StandardGroupRenderer.getProperties(StandardGroupRenderer.java:416)

at com.sapportals.wcm.control.util.propertystructure.UnmodelledPropertiesGroupRenderer.getProperties(UnmodelledPropertiesGroupRenderer.java:340)

at com.sapportals.wcm.control.util.propertystructure.StandardGroupRenderer.getProperties(StandardGroupRenderer.java:387)

at com.sapportals.wcm.control.edit.PropertiesControl.readInputData(PropertiesControl.java:2747)

at com.sapportals.wdf.stack.Control.triggerInput(Control.java:473)

at com.sapportals.wdf.stack.Control.triggerInput(Control.java:468)

at com.sapportals.wdf.WdfEventDispatcher.dispatch(WdfEventDispatcher.java:173)

at com.sapportals.wdf.WdfCompositeController.onWdfEvent(WdfCompositeController.java:539)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at com.sapportals.htmlb.page.DynPage.doProcessCompositeEvent(DynPage.java:204)

at com.sapportals.htmlb.page.DynPage.doProcessCurrentEvent(DynPage.java:142)

at com.sapportals.htmlb.page.PageProcessor.handleRequest(PageProcessor.java:115)

at com.sapportals.portal.htmlb.page.PageProcessorComponent.doContent(PageProcessorComponent.java:134)

at com.sapportals.wcm.portal.component.base.ControllerComponent.doContent(ControllerComponent.java:77)

at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)

at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)

at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:645)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)

at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)

at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:522)

at java.security.AccessController.doPrivileged(Native Method)

at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

Former Member
0 Kudos

I have solved the problem It was really an KM Problem by storing the picture, the folowing SAP Note No. 898637 solved the problem.

Best Regards,

Andre

Former Member
0 Kudos

There are two exceptions which coming up in the default trace of the portal.

First one:

-


couldn't retrieve contents with id 897648164885 com.sapportals.wcm.util.content.ContentException: couldn't retrieve contents with id 897648164885

at com.sapportals.wcm.repository.manager.cm.persistence.DBContentInputStream.getInternalStream(DBContentInputStream.java:345)

at com.sapportals.wcm.repository.manager.cm.persistence.DBContentInputStream.<init>(DBContentInputStream.java:50)

at com.sapportals.wcm.repository.manager.cm.persistence.BasicPersistenceDB.selectDocumentContent(BasicPersistenceDB.java:1556)

at com.sapportals.wcm.repository.manager.cm.persistence.commonjdbc.DBContent.getInputStream(DBContent.java:114)

at com.sapportals.wcm.repository.manager.cm.persistence.commonjdbc.DBContent.getInputStream(DBContent.java:95)

at com.sapportals.wcm.repository.ContentImpl$ContentWithPrefetchedInputStream.<init>(ContentImpl.java:402)

at com.sapportals.wcm.repository.ContentImpl.initContent(ContentImpl.java:360)

at com.sapportals.wcm.repository.ContentImpl.getInputStream(ContentImpl.java:111)

at com.sapportals.wcm.repository.ContentImpl.getInputStream(ContentImpl.java:132)

at com.sapportals.wcm.protocol.webdav.server.WDGetHandler.internalHandle(WDGetHandler.java:368)

at com.sapportals.wcm.protocol.webdav.server.WDGetHandler.handle(WDGetHandler.java:257)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.doGet(WDServlet.java:763)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.service(WDServlet.java:454)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.wcm.portal.proxy.PCProxyServlet.service(PCProxyServlet.java:333)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.portal.prt.core.broker.ServletComponentItem$ServletWrapperComponent.doContent(ServletComponentItem.java:110)

at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)

at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)

at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:645)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)

at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)

at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:522)

at java.security.AccessController.doPrivileged(Native Method)

at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

-


Second one:

-


com.sapportals.wcm.util.content.ContentException: failed to create ContentInputStream

at com.sapportals.wcm.repository.manager.cm.persistence.DBContentInputStream.<init>(DBContentInputStream.java:54)

at com.sapportals.wcm.repository.manager.cm.persistence.BasicPersistenceDB.selectDocumentContent(BasicPersistenceDB.java:1556)

at com.sapportals.wcm.repository.manager.cm.persistence.commonjdbc.DBContent.getInputStream(DBContent.java:143)

at com.sapportals.wcm.repository.manager.cm.persistence.commonjdbc.DBContent.getInputStream(DBContent.java:95)

at com.sapportals.wcm.repository.ContentImpl$ContentWithPrefetchedInputStream.<init>(ContentImpl.java:402)

at com.sapportals.wcm.repository.ContentImpl.initContent(ContentImpl.java:360)

at com.sapportals.wcm.repository.ContentImpl.getInputStream(ContentImpl.java:111)

at com.sapportals.wcm.repository.ContentImpl.getInputStream(ContentImpl.java:132)

at com.sapportals.wcm.protocol.webdav.server.WDGetHandler.internalHandle(WDGetHandler.java:368)

at com.sapportals.wcm.protocol.webdav.server.WDGetHandler.handle(WDGetHandler.java:257)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.doGet(WDServlet.java:763)

at com.sapportals.wcm.protocol.webdav.server.WDServlet.service(WDServlet.java:454)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.wcm.portal.proxy.PCProxyServlet.service(PCProxyServlet.java:333)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sapportals.portal.prt.core.broker.ServletComponentItem$ServletWrapperComponent.doContent(ServletComponentItem.java:110)

at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)

at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)

at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:645)

at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)

at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)

at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)

at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)

at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:522)

at java.security.AccessController.doPrivileged(Native Method)

at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

-


but the dont give me much information where i have to look about or where the problem could be i'm not so deep into this portal stuff this time.

Regards,

Andre

P.S. sry about the formatting i didn't get a better layout working ^^

Edited by: Andre Wendel on Apr 29, 2009 3:47 PM

Former Member
0 Kudos

This looks like a KM problem, not a problem with your code.

Is this repository working ok when you store files in a different way (UI upload, WebDAV...)?

Former Member
0 Kudos

Yes, i can access all the other created files over web dav and km. I have only problems by accessing the files/images i create with this code snippet from above. And this problem with opening the generated files is the same the way of accessing it (WebDAV or portal) doesnt matter.

Regards,

Andre

Former Member
0 Kudos

What exception are you getting when the 500 status occurs?