I'm trying to write a web application to upload file using UCF transfer mode. Following the document "DFS v6.5 development guide", I managed to do this.
Steps:
1.write applet to get uid and jsessionid
2.write js to set the uid and jsessionid back to jsp
3.create servlet with the productivity layer to create object
everything is fine, when i implement with the productivity layer. BUT, when I try to create servlet with Axis2 1.4.1 in step 3, exception occurs:
[11-3-31 15:36:26:231 CST] 000000ea EndpointMetho I "Create" operation failed for object: [File-1301557298594] [id =null] PROPERTIES [object_name=File-1301557298594|ba_cms_2_id=1301557298594].
com.emc.documentum.fs.rt.SerializableException: "Create" operation failed for object: [File-1301557298594] [id =null] PROPERTIES [object_name=File-1301557298594|ba_cms_2_id=1301557298594].
at com.emc.documentum.fs.services.core.ObjectServiceWebService.create(ObjectServiceWebService.java:51)
...
...
Caused by: com.emc.documentum.fs.services.core.impl.execution.proto.dfc.DfcOperationException: Create contentful action with identity: "[File-1301557371643] [id =null] PROPERTIES [object_name=File-1301557371643|ba_cms_2_id=1301557371643]" failed.
... 71 more
Caused by: com.emc.documentum.fs.rt.impl.ResourceLookupException: Session is not found.
at com.emc.documentum.fs.rt.context.impl.UcfSessionManagerServer.getUcfSession(UcfSessionManagerServer.java:51)
My code to invoke DFS ObjectService to create object using Axis2. PS: It works well when comment this line : dataObject.getContents().add(ucfContent);
//set context
RepositoryIdentity identity = new RepositoryIdentity();
identity.setUserName(user);
identity.setPassword(password);
identity.setRepositoryName(repository);
ActivityInfo activity = new ActivityInfo();
activity.setSessionId(jsessionId);
activity.setInitiatorDeploymentId(null);
activity.setActivityId(uid);
activity.setAutoCloseConnection(true);
ContentTransferProfile ct = new ContentTransferProfile();
ct.setTransferMode(ContentTransferMode.UCF);
ct.setActivityInfo(activity);
ServiceContext context = new ServiceContext();
context.getIdentities().add(identity);
context.getProfiles().add(ct);
//invoke service
// add service context to the header for subsequent calls
String token = registerContext(context);
OMElement header = getSecurityHeader(token);
System.out.println("token==="+token);
ObjectServiceStub stub = new ObjectServiceStub(this.serviceURL);
ServiceClient client = stub._getServiceClient();
client.addHeader(header);
//set dataobject
StringProperty objNameProperty = new StringProperty();
objNameProperty.setName("object_name");
objNameProperty.setValue("File-" + System.currentTimeMillis());
StringProperty att1 = new StringProperty();
att1.setName("ba_cms_2_id");
att1.setValue("" + System.currentTimeMillis());
PropertySet properties = new PropertySet();
properties.getProperties().add(objNameProperty);
properties.getProperties().add(att1);
ObjectIdentity objIdentity = new ObjectIdentity();
objIdentity.setRepositoryName(repository);
UcfContent ucfContent = new UcfContent();
ucfContent.setFormat(format);
ucfContent.setLocalFilePath(file);
ucfContent.setActivityInfo(activity);
ucfContent.setContentTransferMode(ContentTransferMode.UCF);
DataObject dataObject = new DataObject();
dataObject.setType("cms_base_archive");
dataObject.setIdentity(objIdentity);
dataObject.setProperties(properties);
dataObject.getContents().add(ucfContent);
DataPackage dp = new DataPackage();
dp.getDataObjects().add(dataObject);
//set options
OperationOptions options = new OperationOptions();
options.getProfiles().add(ct);
//create object
Create create = new Create();
create.setDataPackage(dp);
create.setOptions(options);
stub.create(create);