{"id":29659597,"url":"https://github.com/wildfly/wildfly-client-interoperability","last_synced_at":"2025-10-05T22:44:32.569Z","repository":{"id":174084260,"uuid":"651680914","full_name":"wildfly/wildfly-client-interoperability","owner":"wildfly","description":"Tests for the javax \u003c--\u003e jakarta interoperability handshake protocol used in EJB client and Naming client libraries","archived":false,"fork":false,"pushed_at":"2025-07-14T22:00:21.000Z","size":40,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-22T09:55:04.206Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wildfly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-09T19:58:12.000Z","updated_at":"2023-09-01T15:34:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"18aa2837-00d2-4be4-b64e-01a86a75e982","html_url":"https://github.com/wildfly/wildfly-client-interoperability","commit_stats":null,"previous_names":["rachmatowicz/client-interoperability","wildfly/wildfly-client-interoperability"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wildfly/wildfly-client-interoperability","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fwildfly-client-interoperability","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fwildfly-client-interoperability/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fwildfly-client-interoperability/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fwildfly-client-interoperability/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wildfly","download_url":"https://codeload.github.com/wildfly/wildfly-client-interoperability/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildfly%2Fwildfly-client-interoperability/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278532357,"owners_count":26002345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-22T09:36:15.551Z","updated_at":"2025-10-05T22:44:32.551Z","avatar_url":"https://github.com/wildfly.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repo contains tests for the javax \u003c--\u003e jakarta interoperability handshake protocol used in EJB client and \nNaming client libraries. \n\n## Introduction\n\nThe interoperability handshake establishes an agreed version (1 or 2) between client and server and the \nversion is used to determine which marshallers to provide: the legacy marshaller or the interoperability marshaller.\n\nIt contains the following maven modules:\n* sampleApp-ee8 - a module containing a sample EE8 EJB application to be deployed on the legacy server\n* sampleApp-ee10 - a module containing a sample EE10 EJB application to be deployed on the current server\n* legacy2Current - a module which starts a current Wildfly server and runs legacy EJB client tests against it\n* current2Legacy - a module which starts a legacy Wildfly server and runs current EJB client tests against it\n* current2current - a module which starts a current Wildfly server and runs current EJB client tests against it\n\nwhere:\n* legacy =\u003e Wildfly 26.1.3 (Wildfly HTTP client 1.1.12.Final, penultimate release without the interoperability handshake)\n* current =\u003e Wildfly 28.0.0 (Wildfly HTTP client 2.0.2.Final, first release with the interoperability handshake)\n\n## Tests\nThe tests are integration tests (managed by the failsafe-maven-plugin) which gives us the opportunity to start and \nstop independent server instances (managed by the wildfly-maven-plugin) before and after the tests. \n\nThe deployments are simple stateful and stateless EJBs which the clients may use to lookup and invoke upon. Because \nWildfly does not support out-of-the-box bytecode transformation when deploying EE8 deployments on EE10 servers, \nwe need to tailor the deployment to the EE version of the server in question.\n\nThe tests should cover the following scenarios where the handshake protocol is used:\n* EJB client using remote/remote+http protocol\n* EJB client using http protocol\n* Naming client using remote/remote+http protocol\n* Naming client using http protocol\n\nNOTE: the tests only currently cover the EJB client using http protocol.\n\n## Byteman instrumentation\n\nThese tests depend on using Byteman for validating the test criteria, as the state of the protocol handshake is not \neasily accessible via methods of the relevant classes.\n\n### Client side\n\nOn the client side, Byteman rules (@BMRule) are used to define the event specification conditions (targetClass,\ntargetMethod and targetLocation) as well as the condition and action to be evaluated at that point in the code. \nThe rules are annotations on the test case itself.\n\n### Server side\nOn the server side, Byteman scripts (script.btm) are used to define the event specification conditions (targetClass,\ntargetMethod and targetLocation) as well as the condition and action to be evaluated at that point in the code. \nThe server-side scripts are located in the reources/byteman directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildfly%2Fwildfly-client-interoperability","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwildfly%2Fwildfly-client-interoperability","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildfly%2Fwildfly-client-interoperability/lists"}