Running xlyEntry locally
This page is the developer onboarding path: clone the repo, get
xlyEntry started on your machine, and hit a framework endpoint. The
companion Multi-service deployment page covers the
operator view (multiple services, profile permutations, nginx).
Prerequisites
| Tool | Version notes |
|---|---|
| JDK 8 |
xly-src/build.gradle pins sourceCompatibility = 1.8. JDK 11+ has not been validated. |
| Gradle wrapper | Bundled (./gradlew). Don't install Gradle separately. |
| MySQL 8 | Driver com.mysql.cj.jdbc.Driver. The schema in your DB must match what the active profile yaml points at — see "DB override" below. |
| Redis | The local profile expects 127.0.0.1:16379 with password xlyXLY2015 (see xlyEntry/src/main/resources/application-local.yml). |
| ActiveMQ + MongoDB | The local profile points at t0.xlyprint.com for both. If you have network access to that host, you don't need to run them locally. |
For the full library inventory the runtime brings up — Spring Boot 2.2.5, MyBatis 2.1.2, Druid, Activiti, Shiro, iText, Aspose, and the rest — see Tech stack.
The auto-catalog generator (scripts/gen_catalog.py) is unrelated to
running xly — it only reads schema metadata via ~/.my.cnf. See
Contributing for that path.
DB override
The committed xlyEntry/src/main/resources/application-local.yml has
spring.datasource.url pointing at a remote dev DB. Most developers
override that to a local-or-personal target. Two options:
- Edit the yaml in your working tree. Don't commit the change.
-
Override at the JVM level with
-Dspring.datasource.url=...when invokingbootRun.
The wiki's recon scripts use ~/.my.cnf for xlyweberp_saas_ai —
that's a different schema than what application-local.yml ships
with (xlyweberp_saas). Pick one schema and stay consistent.
Run
From xly-src/:
./gradlew :xlyEntry:bootRun -Dspring.profiles.active=local
xlyEntry is packaged as a WAR (see its build.gradle) but Spring
Boot's embedded Tomcat is what bootRun uses, so no external Tomcat
deploy is needed for development.
Smoke check
Once startup completes (look for Tomcat started on port(s): 8080):
| URL | What you should see |
|---|---|
http://localhost:8080/xlyEntry/ |
The framework landing page. Unauthenticated pages render; authenticated ones bounce to /login. |
http://localhost:8080/xlyEntry/druid/ |
The Druid datasource monitor. Default credentials xly / 666666 are in the yaml — change them before exposing the port. |
If the smoke check fails, look in the log directory configured at
logging.dirpath in the active profile yaml.
What local does and doesn't include
The local profile boots only the framework runtime. It does not
boot:
-
xlyApi— start it as a second JVM if you need the external API surface. -
xlyInterface— same. -
xlyPlc,xlyFlow,xlyFace— same; each has its own application class and profile. - The
xlyErpJms*consumers — they are standalone Spring Boot apps. Without them, ActiveMQ base-data merge and document fan-out jobs will not run. Redis cache invalidation for BACK saves still works through synchronous@CacheEvict.
For multi-service local development, see Multi-service deployment.
When startup fails
The two most common failure modes:
-
Communications link failure— thespring.datasource.urltarget is unreachable from your machine. Override it (see "DB override"). -
Connection refused: t0.xlyprint.com:61616or:27017— your network can't reach the shared dev infra. You can either get on the right network, point the yaml at local instances, or comment out the relevant beans for the duration of your debugging session.