Am 29.08.24 um 13:08 schrieb Mark Thomas:
On 29/08/2024 11:36, Mark Thomas wrote:On 29/08/2024 10:06, Felix Schumacher wrote:Am 25. August 2024 10:36:44 MESZ schrieb Mark Thomas <ma...@apache.org>:<snip/>Thoughts?Personally, I am leaning towards spending the $99 so we can remove the watermark from the Tomcat docs.Have you thought about using a tool like plantuml or mermaid-js?I did look for free UML tools but don't recall either of those.That way the source would be human readable. Plantuml could probably be added to the ant setup and would render SVG files or even ASCII art.I'd like that a lot.The files under architecture looked like sequence diagrams, which should be doable.Agreed. I'll see if I can re-create diagrams one and two in PlantUML. If the output is comparable then we can look at integrating PlantUML into the site build.I'm disappointed to report that I found some issues with displaying activation with both options.mermaid-js seemed to move the messages to make space for the activation bar but then didn't display the activation bar. There were also issues with message text placement that are probably solvable but I didn't look into it.PlantUML was better but it is opinionated on when you can activate/deactivate actors which means I can't recreate the diagrams exactly. It may well be right from a strict view of the UML spec - it is a *very* long time since I did any UML work in anger - but that strictness is a little too constraining.Given the relatively low cost I still think the Visual Paradigm is the better option right now. I'm disappointed as I really like the idea of the source being human readable but I think the end result needs to be the priority.
While I don't object to buying a license, I would love to know, which diagram you looked at and what exactly did not work out. (the activation stuff in mermaid is brittle, but I think I managed to get them all right)
I tried to recreate https://tomcat.apache.org/tomcat-11.0-doc/architecture/startup/1_overview.png as that had the watermark on it.
For plantuml I got //www.plantuml.com/plantuml/png/bLHDRnD13BtFh_0HAeNSeoggA1SaX93Q0rTtnqcCvcCPEmtvzzG9iyl0f5LkatdlsSz-axqJnQBx69p3GVaPbU1ZpYfQS7HkEi9YFT-lW1FhVK2HBnaz5NdttZbew8lr6kvHCN12kBc15IGwV4wYc0RwdpwJLo2atx1G-hk3AIQ3bUgSfyxbAvLjs0kbwgbLX8p-Ae5jvYj6JbkJzJaZ5g47AizKliVmPdbRvIVUaYYLqogTIra92czt2dapWSu1FEu8V2KFXL1904Cmx8MgBt1--a632dZQS29lo78f9piVViMmNCBJNY6dS3IwmMUlm0AoouS4Eoe4crmC4uvZu87rw1mb3sRDEMXdhmx_pDwCNB6JgFuuJsrzfvazTIIUhdWLbnDxq48OsyHg-pEZiMp0rBszWcw9pikhWhufF23tN-g_uS_t5ZwBfNGu1VIOuu0ACbBoOh1o9B2WEMsXqCyzYSgSshMB4yrZts9t1PNUmpo9bdniuDlRnQ8Ikgj--yzl9MR3bnMUUX-_Eqf-7yDl
with the following code: @startuml activate Bootstrap Bootstrap -> Bootstrap: initClassLoaders() Bootstrap -->> Catalina ** : newInstance() Bootstrap -> Catalina: setParentClassLoader() activate Catalina deactivate Catalina Bootstrap -> Catalina: start() activate Catalina Catalina -> Catalina: load() activate Catalina Catalina -> Catalina: initNaming() Catalina -> Catalina: parseServerXml() activate Catalina Catalina -->> Digester ** : note right of Digester The digester creates all of the objects defined //server.xml// but only the Server is shown here for simplicity end note Catalina -> Digester: parse() activate Digester Digester -->> Server ** : deactivate Digester deactivate Catalina deactivate Catalina Catalina -> Catalina: initStream() Catalina -> Server: init() activate Server deactivate Server Catalina -> Server: start() activate Server Catalina -> Catalina: await() activate Catalina note right of Catalina This is where Tomcat spends time serving requests end note deactivate Catalina Catalina -> Catalina: stop() activate Catalina Catalina -> Server: stop() Catalina -> Server: destroy() Catalina <<-- Server: deactivate Server deactivate Catalina Bootstrap <<-- Catalina: deactivate Catalina deactivate Bootstrap @endumland for mermaidjs I got https://mermaid.ink/svg/pako:eNqVVMlu2zAQ_RWCpxqN-wFE4UOTS4GiKGAfetBlLI4lplxUchTXCPLvHcparEaOG0IHSe_N9mY4z7IMGqWSCX-36Et8MFBFcIUvvOADJZknIBRfQqBEEZoBGX-sN5vxXQnjDd1bSOlbAI3xw6rjD0ZlxOysgUimNA14EvdAYI2H137XqwFTwuPxq08EnGHv8p8UPk7chPQDIvqFPPhoHGuahb7llDjnycsAzEmWYy1yJkrW5zs446tbzlikhFuMTxh_OjuxFzR8MBUmwvjK4Xo1QOrzPm4G3Ad2EE1VkwiH0VqJXY1C9199nCTA2mzLRGI47B-xpMQyHoxHnRHjWfKc5qc_zop9y069PWV2Rs-QMEmkOhy9qDGiOITYYcY1loug05IUU16dFG8qcNZpIAyWXP8ZUOKy_Gsj8DZ0tZ1b4nzccjuH8Jm3OIPzxJdM_2vy4AiXAeYNnmi7mvvAz7Hrwi64EkikBr1OWSAyDrte8niKmDdCovQ-aWZXJjSLeU-V3SBojh_D6fbl5XO2mS2NKz2_Ivl6dbHG3j8uo7G8kw6jA6N5rT5nXiH5LjgspOJXDfFXIQv_wjxoKWxPvpSKYot3Moa2qqU6gE381TaaHfcLuf_78hdLjvOC
with the following code sequenceDiagram activate Bootstrap Bootstrap->>Bootstrap: initClassLoader() create participant Catalina Bootstrap--)Catalina: newInstance() Bootstrap->>+Catalina: setParentClassLoader() deactivate Catalina Bootstrap->>+Catalina: start() Catalina->>+Catalina: load() Catalina->>Catalina: initNaming() Catalina->>+Catalina: parseServerXml() create participant Digester Catalina--)Digester:<br>note right of Digester: The digester creates all<br>of the objects defined<br>in server.xml but only the<br>server is shown here for<br>simplicity
Catalina->>+Digester: parse() create participant Server Digester--)Server: <br> deactivate Catalina deactivate Catalina Catalina->>Catalina: initStream() Catalina->>+Server: init() deactivate Server Catalina->>+Server: start() Catalina->>+Catalina: await()note right of Catalina: This is where Tomcat spends<br>time serving requests
deactivate Catalina Catalina->>+Catalina: stop() Catalina->>Server: stop() Catalina->>Server: destroy() deactivate Catalina Server--)Catalina: <br> deactivate Server Catalina--)Bootstrap: <br> deactivate Catalina deactivate BootstrapIf you want, I can give a try to recreate some other diagram of our documentation.
To summarize my findings. plantuml seemed to be more predictable and feature-rich (for sequence diagrams) than mermaidjs. But I didn't see any showstoppers with both of them.
Another alternative to use would be umlet (https://www.umlet.com/), which I used way back, but haven't looked at lately.
I hope you didn't mind the inline code and thus this long message. Felix
Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
OpenPGP_0xEA6C3728EA91C4AF.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature