cancel
Showing results for 
Search instead for 
Did you mean: 

java.lang.LinkageError: Class com/sapportals/wcm/repository/ResourceContext

Former Member
0 Kudos

Hi,

Can anyone let me know what this means?

The full stack trace is as follows

at com.tsl.ccs.ui.CCSMain.uploadFileIntoKM(CCSMain.java:2513)
	at com.tsl.ccs.ui.CCSMain.exportSearched(CCSMain.java:1633)
	at com.tsl.ccs.ui.wdp.InternalCCSMain.exportSearched(InternalCCSMain.java:725)
	at com.tsl.ccs.ui.SearchView.onActionExport(SearchView.java:400)
	at com.tsl.ccs.ui.wdp.InternalSearchView.wdInvokeEventHandler(InternalSearchView.java:419)
	at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
	at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)
	at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
	at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
	at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingPortal(ClientSession.java:772)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:707)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
	at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:154)
	at com.sap.tc.webdynpro.clientserver.session.core.ApplicationHandle.doProcessing(ApplicationHandle.java:73)
	at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.sendDataAndProcessActionInternal(AbstractApplicationProxy.java:860)
	at com.sap.tc.webdynpro.portal.pb.impl.localwd.LocalApplicationProxy.sendDataAndProcessAction(LocalApplicationProxy.java:77)
	at com.sap.portal.pb.PageBuilder.updateApplications(PageBuilder.java:1259)
	at com.sap.portal.pb.PageBuilder.SendDataAndProcessAction(PageBuilder.java:324)
	at com.sap.portal.pb.PageBuilderat com.tsl.ccs.ui.CCSMain.uploadFileIntoKM(CCSMain.java:2513)
	at com.tsl.ccs.ui.CCSMain.exportSearched(CCSMain.java:1633)
	at com.tsl.ccs.ui.wdp.InternalCCSMain.exportSearched(InternalCCSMain.java:725)
	at com.tsl.ccs.ui.SearchView.onActionExport(SearchView.java:400)
	at com.tsl.ccs.ui.wdp.InternalSearchView.wdInvokeEventHandler(InternalSearchView.java:419)
	at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
	at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)
	at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
	at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
	at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingPortal(ClientSession.java:772)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:707)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
	at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:154)
	at com.sap.tc.webdynpro.clientserver.session.core.ApplicationHandle.doProcessing(ApplicationHandle.java:73)
	at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.sendDataAndProcessActionInternal(AbstractApplicationProxy.java:860)
	at com.sap.tc.webdynpro.portal.pb.impl.localwd.LocalApplicationProxy.sendDataAndProcessAction(LocalApplicationProxy.java:77)
	at com.sap.portal.pb.PageBuilder.updateApplications(PageBuilder.java:1259)
	at com.sap.portal.pb.PageBuilder.SendDataAndProcessAction(PageBuilder.java:324)
	at com.sap.portal.pb.PageBuilder$1.doPhase(PageBuilder.java:830)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processPhaseListener(WindowPhaseModel.java:755)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doPortalDispatch(WindowPhaseModel.java:717)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:136)
	at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
	at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
	at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:752)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:705)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
	at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:154)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	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)
.doPhase(PageBuilder.java:830)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processPhaseListener(WindowPhaseModel.java:755)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doPortalDispatch(WindowPhaseModel.java:717)
	at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:136)
	at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
	at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
	at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:752)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:705)
	at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
	at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:154)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	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)

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

<b>I have solved the funny problem</b>

Restart the NWDS and compile all the DCs. Deploy again. Then it works ok.

Its SAP mate. I am new to Webdynpro but I am getting good feeling how difficult it can be at times.

Former Member
0 Kudos

Ok Thanks guys. I have given the foler all permissions. I should also add that I am actually able to upload files into KM from other method (but using File upload in webdynpro view).

All the user and foler are valid...... I am clueless here... Any help would be certainly appreciated..

<b>Action</b>

public void onActionExport(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
  {
    //@@begin onActionExport(ServerEvent)
	wdThis.wdGetCCSMainController().exportSearched(); -->400
    //@@end
  }

<b>CCSController code</b>

//@@begin javadoc:exportSearched()
	/** Declared method. */
	//@@end
	public void exportSearched() {
		//@@begin exportSearched()
		try {
			logger.debugT(Category.APPLICATIONS, "*********** reminding the feedback......");
			//get the mgr first
			FeedBackManagerLocal mgr = ServiceLocator.getInstance().getFeedBackManagerBean();
			if (wdContext.nodeSearchResults() != null && wdContext.nodeSearchResults().size() > 0) {
				ArrayList fbIds = new ArrayList();
				for (int i = 0; i < wdContext.nodeSearchResults().size(); i++) {
					ISearchResultsElement element =
						(ISearchResultsElement) wdContext.nodeSearchResults().getElementAt(i);
					if (element != null) {
						fbIds.add(new Long(element.getFeedBackNo()));
					}
				}
				File f =
					mgr.export(
						fbIds,
						wdContext.currentFeedbackViewElement().getCompanyCode(),
						UserHelper.getUser(),
						null);
				uploadFileIntoKM(f);
			}

		} catch (Exception e) {
			String msg = "An error occurred while rejecting the feedback";
			logger.errorT(Category.APPLICATIONS, e.toString());
			logger.errorT(Category.APPLICATIONS, msg);
			MessageAssistant.reportError(wdComponentAPI, msg);

		}
		//@@end
	}

<b>uploadFileIntoKM</b>

public void uploadFileIntoKM(File file) {
		final String method = "uploadFileIntoKM(" + file.getName() + ", <resource>)";
		logger.debugT(Category.APPLICATIONS, "doing " + method);

		try {
			String rootFolder =
				ServiceLocator.getInstance().getProperty(ServiceLocator.PROPERTY_KM_APP_ROOT, this.getCompanyCode());
			logger.debugT(Category.APPLICATIONS, "rootFolder =  " + rootFolder);
			logger.debugT(Category.APPLICATIONS, "USER =  " + UserHelper.getUser().toString());
			if (file != null && file.getName() != null) {
				FileInputStream fis = new FileInputStream(file);
				logger.debugT(Category.APPLICATIONS, "read ");
				//					create an user object from the current user
				IWDClientUser wdClientUser = WDClientUser.getCurrentUser();
				com.sap.security.api.IUser sapUser = wdClientUser.getSAPUser();
				//create an ep5 user from the retrieved user
				com.sapportals.portal.security.usermanagement.IUser ep5User =
					WPUMFactory.getUserFactory().getEP5User(sapUser);
				//establish resource context
				IResourceContext context = new ResourceContext(ep5User);
				//the getEP5 user method is deprecated - but right now there is no ther way!
				logger.debugT(Category.APPLICATIONS, "unique id = " + UserHelper.getUser());
				//							  if (WPUMFactory.getUserFactory().getEP5User(UserHelper.getUser()) == null) {
				//								  logger.debugT(Category.APPLICATIONS, "NULL ");
				//							  }
				//							  ResourceContext context =
				//								  new ResourceContext(WPUMFactory.getUserFactory().getEP5User(UserHelper.getUser()));
				//String root = "/FSApps/SurplusVehiclesAndEquipmentRegister";
				IResourceFactory factory = ResourceFactory.getInstance();
				//create the folder for the specified barcode.
//				try {
//					createResource(rootFolder, "CSV_Uploads", UserHelper.getUser());
//				} catch (Exception e) {
//				}

				RID rid = RID.getRID(rootFolder + "/" + "CSV_Uploads");
				ICollection folder = (ICollection) factory.getResource(rid, context);
				//read the file and create a new content.
				Content content = new Content(fis, "byte", -1);
				String fileName = "CCS_FBs" + (new Date()).toString().replaceAll(" ", "_").replaceAll("-", "_").replaceAll(":", "_").replaceAll("/", "_");
				IResource newResource = folder.createResource(fileName, null, content);
				logger.debugT(Category.APPLICATIONS, "after trying KM");
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			logger.errorT(method, ex.getMessage());
		}
	}

abhimanyu_lagishetti7
Active Contributor
0 Kudos

Hi

Debug the application and check the contents of IUser.

IUser might not have the permissions in KM.

always in webdynpro application working with KM use service user 'cmadmin_service' to get the resource context.

Service Users are not dialog users which are there by default and have all the permissions in KM.

IWDClientUser wdClientUser = WDClientUser.getClientUser("cmadmin_service");

// Get SAP User

com.sap.security.api.IUser sapUser = wdClientUser.getSAPUser();

// Get EP5 User

com.sapportals.portal.security.usermanagement.IUser ep5User = WPUMFactory.getUserFactory().getEP5User(sapUser);

// Resource Context from ep5User

IResourceContext resourceContext = new ResourceContext(ep5User);

Hope this helps you!!

Regards

Abhimanyu

Former Member
0 Kudos

Hi,

Can u paste the code inside onActionExport of SearchView.

Just point line 400 in that.

Regards

Fahad Hamsa