[
https://issues.apache.org/jira/browse/AXIS2C-723?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Lazarski resolved AXIS2C-723.
------------------------------------
Resolution: Won't Fix
1. Obsolete Discussion: The 2007 proposals discussed theoretical Java-style
plugin systems
that never materialized
2. Better Solution Implemented: HTTP/2 support was added through a superior
architecture
that:
- Uses C polymorphism via interface patterns
- Requires zero changes to transport enums
- Provides 100% backward compatibility
- Enables future protocol additions through new interface implementations
3. Clear Development Path: The docs/HTTP2_*.md documentation provides a
well-defined pattern
for adding HTTP/3 and other protocols without modifying core headers
4. The transport enum serves a different purpose: It's used for transport
descriptor
registration in axis2.xml, not for protocol-level request processing
The interface pattern approach is architecturally cleaner than what
AXIS2C-723 proposed and
has been successfully implemented for HTTP/2.
> Should dynamically resolve to transport
> ---------------------------------------
>
> Key: AXIS2C-723
> URL: https://issues.apache.org/jira/browse/AXIS2C-723
> Project: Axis2-C
> Issue Type: Improvement
> Components: core/transport
> Affects Versions: 1.1.0
> Environment: OS:WindowsXP
> Reporter: Atsushi Monna
> Priority: Major
>
> I have a desire for new trasnport in Axis2/C.
> I found a hard cording the transports in axis2_const.h like this.
> #define AXIS2_TRANSPORT_HTTP "http"
> #define AXIS2_TRANSPORT_SMTP "smtp"
> #define AXIS2_TRANSPORT_TCP "tcp"
> #define AXIS2_TRANSPORT_XMPP "xmpp"
> #define AXIS2_TRANSPORT_HTTPS "https"
> typedef enum
> {
> AXIS2_TRANSPORT_ENUM_HTTP = 0,
> AXIS2_TRANSPORT_ENUM_SMTP,
> AXIS2_TRANSPORT_ENUM_TCP,
> AXIS2_TRANSPORT_ENUM_XMPP,
> AXIS2_TRANSPORT_ENUM_HTTPS,
> AXIS2_TRANSPORT_ENUM_MAX
> } AXIS2_TRANSPORT_ENUMS;
> And using like this.
> /**
> * Adds a transport in description.
> * @param conf pointer to conf struct
> * @param env pointer to environment struct
> * @param transport pointer to transport in description. conf assumes
> * ownership of the struct
> * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
> */
> AXIS2_EXTERN axis2_status_t AXIS2_CALL
> axis2_conf_add_transport_in(axis2_conf_t *conf,
> const axutil_env_t *env,
> axis2_transport_in_desc_t *transport,
> const AXIS2_TRANSPORT_ENUMS trans_enum);
> If we want to add a new transport, we must defin a transport in axis2_const.h
> and re-build Axis2/C modules.
> In Axis2 (Java), we don't need to re-build Axis2 modules, if we think so.
> We can only provid a class implemented TransportProvider I/F and add a entry
> at axis2.xml file.
> Axis2 said in key features, engine is completely transport-independent at
> "Transport Fremework".
> I think the realization like Axis2 is advisable.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]