{"id":37018887,"url":"https://github.com/conapi-oss/jms-adapter","last_synced_at":"2026-01-14T02:01:09.625Z","repository":{"id":322953231,"uuid":"1067650573","full_name":"conapi-oss/jms-adapter","owner":"conapi-oss","description":"A lightweight, vendor-neutral Java library providing unified access to JMS 1.x+ compliant message brokers through dynamic adapter pattern and dual javax/jakarta namespace support.","archived":false,"fork":false,"pushed_at":"2025-11-07T07:15:52.000Z","size":169,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-07T09:13:50.577Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/conapi-oss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-01T07:16:02.000Z","updated_at":"2025-11-07T07:15:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/conapi-oss/jms-adapter","commit_stats":null,"previous_names":["conapi-oss/jms-adapter"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/conapi-oss/jms-adapter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conapi-oss%2Fjms-adapter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conapi-oss%2Fjms-adapter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conapi-oss%2Fjms-adapter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conapi-oss%2Fjms-adapter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conapi-oss","download_url":"https://codeload.github.com/conapi-oss/jms-adapter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conapi-oss%2Fjms-adapter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":"2026-01-14T02:00:59.940Z","updated_at":"2026-01-14T02:01:09.589Z","avatar_url":"https://github.com/conapi-oss.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jms-adapter\n\nA lightweight, vendor-neutral Java library providing unified access to JMS 1.x+ compliant message brokers through dynamic adapter pattern and dual javax/jakarta namespace support.\n\n## Features\n\n- **Vendor-Neutral**: Works with any JMS 1.x+ compliant broker (ActiveMQ, IBM MQ, RabbitMQ, etc.)\n- **Dual Namespace Support**: Seamlessly supports both `javax.jms` and `jakarta.jms` namespaces\n- **Dynamic Class Loading**: Load JMS provider libraries at runtime without compile-time dependencies\n- **Unified API**: Single consistent interface across different JMS implementations\n- **JNDI Support**: Create connections via JNDI or direct instantiation\n\n## Installation\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eat.conapi.oss\u003c/groupId\u003e\n    \u003cartifactId\u003ejms-adapter\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle\n\n```gradle\nimplementation 'at.conapi.oss:jms-adapter:1.0.0'\n```\n\n## Usage\n\n### Basic Example - Direct Connection\n\n```java\nimport at.conapi.oss.jms.adapter.*;\n\n// Initialize factory with path to JMS provider JARs\nJmsFactory factory = new JmsFactory(\"/path/to/provider/jars\");\n\n        // Create connection factory\n        Map\u003cString, String\u003e props = Map.of(\n                \"brokerURL\", \"tcp://localhost:61616\"\n        );\n        AbstractConnectionFactory cf = factory.createConnectionFactory(\n                \"org.apache.activemq.ActiveMQConnectionFactory\",\n                props\n        );\n\n        // Create connection and session\n        AbstractConnection connection = cf.createConnection(\"username\", \"password\");\nconnection.\n\n        start();\n\n        AbstractSession session = connection.createSession(false, 1);\n\n        // Create producer and send message\n        AbstractDestination destination = session.createDestination(\"queue://myQueue\");\n        AbstractProducer producer = session.createProducer(destination);\n        AbstractMessage message = session.createTextMessage(\"Hello World\", null);\nproducer.\n\n        send(message);\n\n// Cleanup\nproducer.\n\n        close();\nsession.\n\n        close();\nconnection.\n\n        close();\n```\n\n### JNDI Lookup Example\n\n```java\nHashtable\u003cString, String\u003e jndiProps = new Hashtable\u003c\u003e();\njndiProps.put(\"java.naming.factory.initial\", \"com.example.JndiContextFactory\");\njndiProps.put(\"java.naming.provider.url\", \"tcp://localhost:61616\");\n\nAbstractConnectionFactory cf = factory.lookupConnectionFactory(jndiProps, \"ConnectionFactory\");\n```\n\n## Building from Source\n\n### Prerequisites\n\n- Java 17 or higher\n- Maven 3.6+\n- GPG key for signing (if releasing)\n\n### Build\n\n```bash\n# Clone repository\ngit clone https://github.com/conapi-oss/jms-adapter.git\ncd jms-adapter\n\n# Build and install locally\nmvn clean install\n```\n\n## Release Process (for Maintainers)\n\n### Prerequisites\n\n1. **GPG Key Setup**:\n   ```bash\n   # Generate key if needed\n   gpg --gen-key\n\n   # Publish to keyserver\n   gpg --keyserver keyserver.ubuntu.com --send-keys YOUR_KEY_ID\n\n   # Fix GPG TTY issue (add to ~/.bashrc or ~/.zshrc)\n   export GPG_TTY=$(tty)\n   ```\n\n2. **Maven Central Credentials** in `~/.m2/settings.xml`:\n   ```xml\n   \u003csettings\u003e\n     \u003cservers\u003e\n       \u003cserver\u003e\n         \u003cid\u003ecentral\u003c/id\u003e\n         \u003cusername\u003eYOUR_TOKEN_USERNAME\u003c/username\u003e\n         \u003cpassword\u003eYOUR_TOKEN_PASSWORD\u003c/password\u003e\n       \u003c/server\u003e\n       \u003cserver\u003e\n         \u003cid\u003egpg.passphrase\u003c/id\u003e\n         \u003cpassphrase\u003eYOUR_GPG_PASSPHRASE\u003c/passphrase\u003e\n       \u003c/server\u003e\n     \u003c/servers\u003e\n   \u003c/settings\u003e\n   ```\n\n### Release Commands\n\n```bash\n# Ensure clean working directory\ngit status\n\n# Prepare release (creates tag, updates versions)\nmvn release:prepare\n\n# Perform release (builds, signs, deploys to Maven Central)\nmvn release:perform\n```\n\nThe release plugin will:\n- Update version from `x.x.x-SNAPSHOT` to `x.x.x`\n- Create and push git tag `vx.x.x`\n- Build and sign artifacts\n- Deploy to Maven Central\n- Update to next SNAPSHOT version\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Support\n\nFor issues and questions:\n- GitHub Issues: https://github.com/conapi-oss/jms-adapter/issues\n- Website: https://conapi.at\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconapi-oss%2Fjms-adapter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconapi-oss%2Fjms-adapter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconapi-oss%2Fjms-adapter/lists"}