{"id":15096994,"url":"https://github.com/apache/ofbiz","last_synced_at":"2025-10-08T02:31:04.051Z","repository":{"id":573429,"uuid":"205403","full_name":"apache/ofbiz","owner":"apache","description":"Apache OFBiz - Main development has moved to the ofbiz-frameworks repository.","archived":true,"fork":false,"pushed_at":"2020-04-27T06:10:43.000Z","size":892930,"stargazers_count":779,"open_issues_count":12,"forks_count":551,"subscribers_count":150,"default_branch":"trunk","last_synced_at":"2024-10-02T05:41:29.420Z","etag":null,"topics":["content","database","geospatial","groovy","http","java","javascript","network-server","ofbiz","web-framework","xml"],"latest_commit_sha":null,"homepage":"https://ofbiz.apache.org","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"astaxie/beego","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.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}},"created_at":"2009-05-20T01:47:56.000Z","updated_at":"2024-09-15T13:38:01.000Z","dependencies_parsed_at":"2022-07-07T14:03:34.579Z","dependency_job_id":null,"html_url":"https://github.com/apache/ofbiz","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fofbiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fofbiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fofbiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fofbiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/ofbiz/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235674061,"owners_count":19027515,"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","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":["content","database","geospatial","groovy","http","java","javascript","network-server","ofbiz","web-framework","xml"],"created_at":"2024-09-25T16:03:14.740Z","updated_at":"2025-10-08T02:30:54.040Z","avatar_url":"https://github.com/apache.png","language":"Java","readme":"\u003c!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--\u003e\nApache OFBiz®\n============\n\nWelcome to __Apache OFBiz®__! A powerful top level Apache software project.\nOFBiz is an Enterprise Resource Planning (ERP) System written in Java and\nhouses a large set of libraries, entities, services and features to run \nall aspects of your business.\n\nFor more details about OFBiz please visit the OFBiz Documentation page:\n\n[OFBiz documentation](http://ofbiz.apache.org/documentation.html)\n\n[OFBiz License](http://www.apache.org/licenses/LICENSE-2.0)\n\nSystem requirements\n-------------------\n\nThe only requirement to run OFBiz is to have the Java Development Kit (JDK) \nversion 8 installed on your system (not just the JRE, but the full JDK) which\nyou can download from the below link.\n\n[JDK download](http://www.oracle.com/technetwork/java/javase/downloads/index.html)\n\n\u003e_Note_: if you are using Eclipse, make sure of running the appropriate Eclipse\ncommand `gradlew eclipse` before creating the project in Eclipse.\nThis command will prepare OFBiz for Eclipse with the correct classpath and settings \nby creating the.classpath and .project files.\n\n\u003e_Note_: if you want to use an external DBMS, instead of the embedded Derby, you will need a JDBC driver.\nThe only thing you need to do is add a dependency in build.gradle to the MySQL/PostgreSQL/whatever JDBC driver.\nSearch in Jcenter for the database driver suitable for the database installed on your production system.\nFor example, under the dependencies section you can add something like this for mysql: `runtime 'mysql:mysql-connector-java:5.1.36'`\nOf course you need to make sure the connector is compatible with _your_ version of the database installed!\n\nQuick start\n-----------\n\nTo quickly install and fire-up OFBiz, please follow the below instructions\nfrom the command line at the OFBiz top level directory (folder)\n\n### Prepare OFBiz:\n\n__Note__: Depending on your Internet connection speed it might take a long\ntime for this step to complete if you are using OFBiz for the first time\nas it needs to download all dependencies. So please be patient!\n\nMS Windows:\n`gradlew cleanAll loadDefault`\n\nUnix-like OS:\n`./gradlew cleanAll loadDefault`\n\n### Start OFBiz:\n\nMS Windows:\n`gradlew ofbiz`\n\nUnix-like OS:\n`./gradlew ofbiz`\n\n\u003e_Note_: then ignore the % progress indicator because this task does not end as long as OFBiz is running.\n\n\n### Visit OFBiz through your browser:\n\n[Order Back Office](https://localhost:8443/ordermgr)\n\n[Accounting Back Office](https://localhost:8443/accounting)\n\n[Administrator interface](https://localhost:8443/webtools)\n\nYou can log in with the user __admin__ and password __ofbiz__.\n\n\u003e_Note_: the default configuration uses an embedded Java database\n(Apache Derby) and embedded application server components such as\nApache Tomcat®, Apache Geronimo (transaction manager), etc.\n\nSecurity\n-------------------\n\nYou can trust the OFBiz Project Management Committee members and committers do their best to keep OFBiz secure from external exploits, \nand fix vulnerabilities as soon as they are known. Despite these efforts, if ever you find and want to report a security issue, please report \nat: security @ ofbiz.apache.org, before disclosing them in a public forum.\n\n\u003e_Note_: Be sure to read this Wiki page if ever you plan to use RMI, JNDI, JMX or Spring and maybe other Java classes OFBiz does not use \nOut Of The Box (OOTB): [The infamous Java serialization vulnerability](https://cwiki.apache.org/confluence/display/OFBIZ/The+infamous+Java+serialization+vulnerability)\n\nYou can find more information about security in OFBiz at [Keeping OFBiz secure](https://cwiki.apache.org/confluence/display/OFBIZ/Keeping+OFBiz+secure) \n\n\n* * * * * * * * * * * *\n\nBuild system syntax\n-------------------\n\nAll build tasks are executed using the __Gradle__ build system which\nis embedded in OFBiz. To execute build tasks go to OFBiz top-level\ndirectory (folder) and execute tasks from there.\n\n### Operating System Syntax\n\nThe syntax for tasks differ slightly between windows and Unix-like systems\n\n- __Windows__: `gradlew \u003ctasks-in-here\u003e`\n\n- __Unix-like__: `./gradlew \u003ctasks-in-here\u003e`\n\nFor the rest of this document, we will use the windows syntax, if you are on\na Unix-like system, you need to add the `./` to gradlew\n\n### Types of tasks in Gradle\n\nThere are two types of tasks designed for OFBiz in Gradle:\n\n- __Standard tasks__: To execute general standard Gradle tasks\n\n- __OFBiz server tasks__: To execute OFBiz startup commands. These\n  tasks start with one of the following words:\n  - __ofbiz__ : standard server commands\n  - __ofbizDebug__ : server commands running in remote debug mode\n  - __ofbizBackground__ ; server commands running in a background forked process\n\nTips: \n\n- OFBiz __server commands__ require __\"quoting\"__ the \n  commands. For example: `gradlew \"ofbiz --help\"`\n\n- Shortcuts to task names can be used by writing the\n  first letter of every word in a task name. However, you\n  cannot use the shortcut form for OFBiz server tasks.\n  Example: `gradlew loadAdminUserLogin -PuserLoginId=myadmin` = `gradlew lAUL -PuserLoginId=myadmin`\n\n#### Example standard tasks\n\n`gradlew build`\n\n`gradlew cleanAll loadDefault testIntegration`\n\n#### Example OFBiz server tasks\n\n`gradlew \"ofbiz --help\"`\n\n`gradlew \"ofbizDebug --test\"`\n\n`gradlew \"ofbizBackground --start --portoffset 10000\"`\n\n`gradlew \"ofbiz --shutdown --portoffset 10000\"`\n\n`gradlew ofbiz` (default is --start)\n\n#### Example mixed tasks (standard and OFBiz server)\n\n`gradlew cleanAll loadDefault \"ofbiz --start\"`\n\n* * * * * * * * * * * *\n\nQuick reference\n---------------\n\nYou can use the below common list of tasks as a quick reference\nfor controlling the system. This document uses the windows task\nsyntax, if you are on a Unix-like system, you need to add the \n`./` to gradlew i.e. `./gradlew`\n\n* * * * * * * * * * * *\n\n### Help tasks\n\n#### List OFBiz server commands\n\nList all available commands to control the OFBiz server\n\n`gradlew \"ofbiz --help\"`\n\n#### List build tasks\n\nList all available tasks from the build system\n\n`gradlew tasks`\n\n#### List build projects\n\nList all available projects in the build system\n\n`gradlew projects`\n\n#### Gradle build system help\n\nShow usage and options for the Gradle build system\n\n`gradlew --help`\n\n* * * * * * * * * * * *\n\n### Server command tasks\n\n#### Start OFBiz\n\n`gradlew \"ofbiz --start\"`\n\nstart is the default server task so this also works:\n\n`gradlew ofbiz`\n\n#### Shutdown OFBiz\n\n`gradlew \"ofbiz --shutdown\"`\n\n#### Get OFBiz status\n\n`gradlew \"ofbiz --status\"`\n\n#### Force OFBiz shutdown\n\nTerminate all running OFBiz server instances by calling\nthe appropriate operating system kill command. Use this\ncommand to force OFBiz termination if the --shutdown\ncommand does not work. Usually this is needed when in the\nmiddle of data loading or testing in OFBiz.\n\nWarning: Be careful in using this command as force termination\nmight lead to inconsistent state / data\n\n`gradlew terminateOfbiz`\n\n#### Start OFBiz in remote debug mode\n\nStarts OFBiz in remote debug mode and waits for debugger\nor IDEs to connect on port __5005__\n\n`gradlew \"ofbizDebug --start\"`\n\nOR\n\n`gradlew ofbizDebug`\n\n#### Start OFBiz on a different port\n\nStart OFBiz of the network port offsetted by the range\nprovided in the argument to --portoffset\n\n`gradlew \"ofbiz --start --portoffset 10000\"`\n\n#### Start OFBiz in the background\n\nStart OFBiz in the background by forking it to a new\nprocess and redirecting the output to __runtime/logs/console.log__\n\n`gradlew \"ofbizBackground --start\"`\n\nOR\n\n`gradlew ofbizBackground`\n\nYou can also offset the port, for example:\n\n`gradlew \"ofbizBackground --start --portoffset 10000\"`\n\n* * * * * * * * * * * *\n\n### Data loading tasks\n\nOFBiz contains the following data reader types:\n\n- __seed__: OFBiz and External Seed Data - to be maintained along with source and\n  updated whenever a system deployment is updated\n- __seed-initial__: OFBiz and External Seed Data - to be maintained along with \n  source like other seed data, but only loaded initially and not updated\n  when a system is updated except manually reviewing each line\n- __demo__: OFBiz Only Demo Data\n- __ext__: External General Data (custom)\n- __ext-test__: External Test Data (custom)\n- __ext-demo__: External Demo Data (custom)\n\nyou can choose which data readers to pass in the following syntax:\n\n`gradlew \"ofbiz --load-data readers=\u003creaders-here-comma-separated\u003e\"`\n\nExample:\n\n`gradlew \"ofbiz --load-data readers=seed,seed-initial,ext,ext-demo\"`\n\n#### Load default OFBiz data\n\nLoads default data set; meant for initial loading of generic OFBiz data. \nCan be applied for development, testing, demonstration, etc. purposes. \nBe aware that executing this task can result in your data being overwritten in your database of choice. \nUse with caution in production environments. \nThe default data set is defined by datasource using the read-data attribute, \nfollowed by the name of the data set, into the datasource element of the 'entityengine.xml' file.\n\n\n`gradlew loadDefault`\n\nOR\n\n`gradlew \"ofbiz --load-data\"`\n\n#### Load seed data\n\nLoad ONLY the seed data (not seed-initial, demo, ext* or anything else);\nmeant for use after an update of the code to reload the seed data\nas it is generally maintained along with the code and needs to be\nin sync for operation\n\n`gradlew \"ofbiz --load-data readers=seed\"`\n\n#### load ext data\n\nLoad seed, seed-initial and ext data; meant for manual/generic\ntesting, development, or going into production with a derived\nsystem based on stock OFBiz where the ext data basically\nreplaces the demo data\n\n`gradlew \"ofbiz --load-data readers=seed,seed-initial,ext\"`\n\n#### load ext test data\n\nLoad seed, seed-initial, ext and ext-test data; meant for\nautomated testing with a derived system based on stock OFBiz\n\n`gradlew \"ofbiz --load-data readers=seed,seed-initial,ext,ext-test\"`\n\n#### load data from an entity file\n\nLoad data from an XML file holding entity data.\n\n`gradlew \"ofbiz --load-data file=foo/bar/FileNameHere.xml\"`\n\n#### create a new tenant\n\nCreate a new tenant in your environment, create the delegator, load\ninitial data with admin-user and password (needs multitenant=Y in \ngeneral.properties). The following project parameters are passed:\n\n- tenantId: mandatory\n- tenantName: optional, default is value of tenantId\n- domainName: optional, default is org.apache.ofbiz\n- tenantReaders: optional, default value is seed,seed-initial,demo\n- dbPlatform: optional, D(Derby), M(MySQL), O(Oracle), P(PostgreSQL) (default D) \n- dbIp: optional, ip address of the database\n- dbUser: optional, username of the database\n- dbPassword: optional, password of the database\n\n`gradlew createTenant -PtenantId=mytenant`\n\n`gradlew createTenant -PtenantId=mytenant -PtenantName=\"My Name\" -PdomainName=com.example -PtenantReaders=seed,seed-initial,ext -PdbPlatform=M -PdbIp=127.0.0.1 -PdbUser=mydbuser -PdbPassword=mydbpass`\n\nIf run successfully, the system creates a new tenant having:\n\n- delegator: default#${tenandId} (e.g. default#mytenant)\n- admin user: ${tenantId}-admin (e.g. mytenant-admin)\n- admin user password: ofbiz\n\n#### load data for a specific tenant\n\nLoad data for one specific tenant in a multitenant environment. Note\nthat you must set multitenant=Y in general.properties and the\nfollowing project parameters are passed:\n\n- tenantId (mandatory)\n- tenantReaders (optional)\n- tenantComponent (optional)\n\n`gradlew loadTenant -PtenantId=mytenant`\n\n`gradlew loadTenant -PtenantId=mytenant -PtenantReaders=seed,seed-initial,demo -PtenantComponent=base`\n\n* * * * * * * * * * * *\n\n### Testing tasks\n\n#### Execute all unit tests\n\n`gradlew test`\n\n#### Execute all integration tests\n\n`gradlew testIntegration`\n\nOR\n\n`gradlew 'ofbiz --test'`\n\n#### Execute an integration test case\n\nrun a test case, in this example the component is \"entity\" and the case\nname is \"entity-tests\"\n\n`gradlew \"ofbiz --test component=entity --test case=entity-tests\"`\n\n#### Execute an integration test case in debug mode\n\nlistens on port __5005__\n\n`gradlew \"ofbizDebug --test component=entity --test case=entity-tests\"`\n\n#### Execute an integration test suite\n\n`gradlew \"ofbiz --test component=widget --test suitename=org.apache.ofbiz.widget.test.WidgetMacroLibraryTests\"`\n\n#### Execute an integration test suite in debug mode\n\nlistens on port __5005__\n\n`gradlew \"ofbizDebug --test component=widget --test suitename=org.apache.ofbiz.widget.test.WidgetMacroLibraryTests\"`\n\n* * * * * * * * * * * *\n\n### Miscellaneous tasks\n\n#### Launch a graphical user interface of Gradle\n\nThis is a very convenient feature of Gradle which\nallows the user to interact with Gradle through a\nswing GUI. You can save frequently used commands\nin a list of favorites for frequent reuse.\n\n`gradlew --gui`\n\n#### Run all tests on a clean system\n\n`gradlew cleanAll loadDefault testIntegration`\n\n#### Clean all generated artifacts\n\n`gradlew cleanAll`\n\n#### Refresh the generated artifacts\n\n`gradlew clean build`\n\n#### Create an admin user account\n\nCreate an admin user with login name MyUserName and default password\nwith value \"ofbiz\". Upon first login OFBiz will request changing the\ndefault password\n\n`gradlew loadAdminUserLogin -PuserLoginId=MyUserName`\n\n#### Compile Java using Xlint output\n\nXlint prints output of all warnings detected by the compiler\n\n`gradlew -PXlint build`\n\n#### Run OWASP tool to identify dependency vulnerabilities (CVEs)\n\nThe below command activates a gradle plugin (OWASP) and Identifies\nand reports known vulnerabilities (CVEs) in OFBiz library dependencies.\nThis command takes a long time to execute because it needs to download\nall plugin dependencies and the CVE identification process is also\ntime consuming\n\n`gradlew -PenableOwasp dependencyCheck`\n\n#### Setup eclipse project for OFBiz\n\nSetting up OFBiz on eclipse is easy by simply running the below command\nand then importing the project to eclipse. This command will generate\nthe necessary __.classpath__ and __.project__ files for eclipse and it\nwill also make the source code for external libraries available in\neclipse (i.e. you can view source through Ctrl + Click)\n\nThe first time you run this command it will take a long time to execute\nbecause it will download source packages available for project\ndependencies.\n\n`gradlew eclipse`\n\n* * * * * * * * * * *\n\nOFBiz plugin system\n-------------------\n\nOFBiz provides an extension mechanism through plugins. Plugins are standard\nOFBiz components that reside in the plugins directory. Plugins can be\nadded manually or fetched from a maven repository. The standard tasks for\nmanaging plugins are listed below.\n\n\u003e_Note_: OFBiz plugin versions follow [Semantic Versioning 2.0.0](http://semver.org/)\n\n### Pull (download and install) a plugin automatically\n\nDownload a plugin with all its dependencies (plugins) and install them one-by-one\nstarting with the dependencies and ending with the plugin itself.\n\n`gradlew pullPlugin -PdependencyId=\"org.apache.ofbiz.plugin:myplugin:0.1.0\"`\n\nIf the plugin resides in a custom maven repository (not jcenter or localhost) then\nyou can use specify the repository using below command:\n\n`gradlew pullPlugin -PrepoUrl=\"http://www.example.com/custom-maven\" -PdependencyId=\"org.apache.ofbiz.plugin:myplugin:0.1.0\"`\n\nIf you need username and password to access the custom repository:\n\n`gradlew pullPlugin -PrepoUrl=\"http://www.example.com/custom-maven\" -PrepoUser=myuser -PrepoPassword=mypassword -PdependencyId=\"org.apache.ofbiz.plugin:myplugin:0.1.0\"`\n\n### Pull a source plugin\n\nDownload a plugin from source control (currently subversion) and place it in\nthe plugins directory. This is mostly useful when working on the trunk branch\nas it requires the latest version of a plugin\n\n`gradlew pullPluginSource -PpluginId=ecommerce`\n\n### Install a plugin\n\nIf you have a plugin called mycustomplugin and want to install it in OFBiz follow the\nbelow instructions:\n\n- Extract the plugin if it is compressed\n- Place the extracted directory into /plugins\n- Run the below command\n\n`gradlew installPlugin -PpluginId=myplugin`\n\nThe above commands executes the task \"install\" in the plugin's build.gradle\nfile if it exists\n\n### Uninstall a plugin\n\nIf you have an existing plugin called mycustomplugin and you wish to uninstall\nrun the below command\n\n`gradlew uninstallPlugin -PpluginId=myplugin`\n\nThe above command executes the task \"uninstall\" in the plugin's build.gradle\nfile if it exists\n\n### Remove a plugin\n\nCalls __uninstallPlugin__ on an existing plugin and then delete it from the file-system\n\n`gradlew removePlugin -PpluginId=myplugin` \n\n### Create a new plugin\n\nCreate a new plugin. The following project parameters are passed:\n\n- pluginId: mandatory\n- pluginResourceName: optional, default is the Capitalized value of pluginId\n- webappName: optional, default is the value of pluginId\n- basePermission: optional, default is the UPPERCASE value of pluginId\n\n`gradlew createPlugin -PpluginId=myplugin`\n\n`gradlew createPlugin -PpluginId=myplugin -PpluginResourceName=MyPlugin -PwebappName=mypluginweb -PbasePermission=MYSECURITY`\n\nThe above command creates a new plugin in /plugins/myplugin\n\n### Push a plugin to a repository\n\nThis task publishes an OFBiz plugin into a maven package and then uploads it to\na maven repository. Currently, pushing is limited to localhost maven repository\n(work in progress). To push a plugin the following parameters are passed:\n\n- pluginId: mandatory\n- groupId: optional, defaults to org.apache.ofbiz.plugin\n- pluginVersion: optional, defaults to 0.1.0-SNAPSHOT\n- pluginDescription: optional, defaults to \"Publication of OFBiz plugin ${pluginId}\"\n\n`gradlew pushPlugin -PpluginId=myplugin`\n\n`gradlew pushPlugin -PpluginId=mycompany -PpluginGroup=com.mycompany.ofbiz.plugin -PpluginVersion=1.2.3 -PpluginDescription=\"Introduce special functionality X\"`\n\n\n* * * * * * * * * * * *\n\nUseful Tips\n-----------\n\n### Gradle tab-completion on Unix-like systems:\n\nTo get tab completion (auto complete gradle commands by pressing tab)\nyou can download the script from the below link and place it in the\nappropriate location for your system.\n\n[Gradle tab completion](https://gist.github.com/Ea87/46401a96df31cd208a87)\n\nFor example, on debian based systems, you can use the following command:\n\n`sudo curl -L -s https://gist.github.com/Ea87/46401a96df31cd208a87/raw/gradle-tab-completion.bash -o /etc/bash_completion.d/gradle-tab-completion.bash`\n\nCrypto notice\n-------------\n\nThis distribution includes cryptographic software.  The country in\nwhich you currently reside may have restrictions on the import,\npossession, use, and/or re-export to another country, of\nencryption software.  BEFORE using any encryption software, please\ncheck your country's laws, regulations and policies concerning the\nimport, possession, or use, and re-export of encryption software, to\nsee if this is permitted.  See \u003chttp://www.wassenaar.org/\u003e for more\ninformation.\n\nThe U.S. Government Department of Commerce, Bureau of Industry and\nSecurity (BIS), has classified this software as Export Commodity\nControl Number (ECCN) 5D002.C.1, which includes information security\nsoftware using or performing cryptographic functions with asymmetric\nalgorithms.  The form and manner of this Apache Software Foundation\ndistribution makes it eligible for export under the License Exception\nENC Technology Software Unrestricted (TSU) exception (see the BIS\nExport Administration Regulations, Section 740.13) for both object\ncode and source code.\n\nThe following provides more details on the included cryptographic\nsoftware:\n\n- Various classes in OFBiz, including DesCrypt, HashCrypt, and\n BlowFishCrypt use libraries from the Sun Java JDK API including\n java.security.* and javax.crypto.* (the JCE, Java Cryptography\n Extensions API)\n- Other classes such as HttpClient and various related ones use\n the JSSE (Java Secure Sockets Extension) API\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fofbiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fofbiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fofbiz/lists"}