Your issue requires a comprehensive configuration update across three layers. Let me walk through the complete solution addressing all focus areas.
1. REST API file upload limits: The 100MB limit you’re hitting is the default OData servlet restriction. This is independent of the UI upload limits. Modify Windchill/codebase/WEB-INF/web.xml:
<servlet>
<servlet-name>ODataServlet</servlet-name>
<init-param>
<param-name>maxFileSize</param-name>
<param-value>524288000</param-value> <!-- 500MB -->
</init-param>
</servlet>
Also update the multipart configuration:
<multipart-config>
<max-file-size>524288000</max-file-size>
<max-request-size>524288000</max-request-size>
</multipart-config>
2. wt.content.maxFileSize property: This controls Windchill’s content storage layer. Update in site.xconf or via the property management UI:
wt.content.maxFileSize=524288000
Important: This property is in bytes. Set it to at least match your largest expected file size. After changing, run xconfmanager -p to propagate the change.
3. Tomcat server configuration: Edit Windchill/Tomcat/conf/server.xml and update the Connector element:
<Connector port="8080" protocol="HTTP/1.1"
maxPostSize="524288000"
connectionTimeout="300000"
maxSwallowSize="524288000"/>
The connectionTimeout increase (5 minutes) is critical for large file uploads over slower networks. The maxSwallowSize prevents Tomcat from rejecting the request body.
Additional critical configuration: Update the Apache Commons FileUpload settings in Windchill/codebase/service.properties:
com.ptc.windchill.upload.maxFileSize=524288000
com.ptc.windchill.upload.maxRequestSize=524288000
com.ptc.windchill.upload.fileSizeThreshold=10485760
Restart sequence (order matters):
- Stop Windchill method server
- Stop Tomcat
- Clear Tomcat work directory: `rm -rf Windchill/Tomcat/work/*
- Start Tomcat
- Start method server
- Verify with: `xconfmanager -s wt.content.maxFileSize
Performance optimization: For files over 200MB, implement chunked uploads:
// Split file into 50MB chunks
POST /Windchill/servlet/odata/ProdMgmt/ChunkedUpload/Initialize
Payload: {"fileName": "simulation_results.fea", "totalSize": 196608000}
// Upload each chunk
POST /Windchill/servlet/odata/ProdMgmt/ChunkedUpload/Chunk
Payload: {"uploadId": "session_id", "chunkIndex": 0, "data": "base64_chunk"}
// Finalize
POST /Windchill/servlet/odata/ProdMgmt/ChunkedUpload/Complete
Payload: {"uploadId": "session_id", "attachTo": "OR:456"}
This approach provides better error recovery and progress tracking for large simulation files. Test with a 150MB file first to validate the configuration before scaling up to your full 250MB files.
This draft is based on general Windchill knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.