Update README with Python test scripts documentation

- Added comprehensive Python testing section
- Updated project structure to include scripts folder
- Organized Files Overview into categories (Core, Docker, Test Scripts)
- Fixed WSDL URLs (removed incorrect /services/ path)
- Added examples for both test_hello_world.py and simple_test.py
- Included troubleshooting guide for Python tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-05 09:14:48 +01:00
parent 0322191af8
commit ef5b7072cf

144
README.md
View File

@ -7,6 +7,8 @@ A simple JAX-WS web service boilerplate project that returns "Hello World" messa
``` ```
jaxws-hello-world/ jaxws-hello-world/
├── pom.xml ├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── src/ ├── src/
│ └── main/ │ └── main/
│ ├── java/ │ ├── java/
@ -19,19 +21,33 @@ jaxws-hello-world/
│ └── WEB-INF/ │ └── WEB-INF/
│ ├── web.xml │ ├── web.xml
│ └── sun-jaxws.xml │ └── sun-jaxws.xml
└── scripts/
├── test_hello_world.py
├── simple_test.py
├── requirements.txt
└── README.md
``` ```
## Files Overview ## Files Overview
### Core Files
- **pom.xml**: Maven configuration with JAX-WS dependencies - **pom.xml**: Maven configuration with JAX-WS dependencies
- **HelloWorldService.java**: Web service interface with @WebService annotation - **HelloWorldService.java**: Web service interface with @WebService annotation
- **HelloWorldServiceImpl.java**: Implementation of the web service - **HelloWorldServiceImpl.java**: Implementation of the web service
- **web.xml**: Web application deployment descriptor - **web.xml**: Web application deployment descriptor
- **sun-jaxws.xml**: JAX-WS endpoint configuration - **sun-jaxws.xml**: JAX-WS endpoint configuration
### Docker Files
- **Dockerfile**: Multi-stage Docker build configuration - **Dockerfile**: Multi-stage Docker build configuration
- **docker-compose.yml**: Docker Compose orchestration file - **docker-compose.yml**: Docker Compose orchestration file
- **tomcat-users.xml**: Tomcat manager user configuration - **tomcat-users.xml**: Tomcat manager user configuration
### Test Scripts
- **scripts/test_hello_world.py**: Interactive Python test client with automated tests
- **scripts/simple_test.py**: Simple automated test script for CI/CD
- **scripts/requirements.txt**: Python dependencies
- **scripts/README.md**: Detailed test script documentation
## Quick Start with Docker (Recommended) ## Quick Start with Docker (Recommended)
The easiest way to test this application is using Docker. No need to install Java, Maven, or Tomcat! The easiest way to test this application is using Docker. No need to install Java, Maven, or Tomcat!
@ -48,7 +64,7 @@ docker-compose up -d
``` ```
**2. Wait for the application to start (about 30-40 seconds), then access:** **2. Wait for the application to start (about 30-40 seconds), then access:**
- **WSDL**: http://localhost:8080/jaxws-hello-world/services/hello?wsdl - **WSDL**: http://localhost:8080/jaxws-hello-world/hello?wsdl
- **Tomcat Manager**: http://localhost:8080/manager (username: `admin`, password: `admin123`) - **Tomcat Manager**: http://localhost:8080/manager (username: `admin`, password: `admin123`)
**3. View logs:** **3. View logs:**
@ -90,10 +106,10 @@ Once the container is running, test the service:
```bash ```bash
# Check if WSDL is accessible # Check if WSDL is accessible
curl http://localhost:8080/jaxws-hello-world/services/hello?wsdl curl http://localhost:8080/jaxws-hello-world/hello?wsdl
# Test with a SOAP request # Test with a SOAP request
curl -X POST http://localhost:8080/jaxws-hello-world/services/hello \ curl -X POST http://localhost:8080/jaxws-hello-world/hello \
-H "Content-Type: text/xml; charset=utf-8" \ -H "Content-Type: text/xml; charset=utf-8" \
-H "SOAPAction: " \ -H "SOAPAction: " \
-d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.example.com/"> -d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.example.com/">
@ -106,6 +122,128 @@ curl -X POST http://localhost:8080/jaxws-hello-world/services/hello \
</soapenv:Envelope>' </soapenv:Envelope>'
``` ```
## Testing with Python Scripts
Python test scripts are provided in the [scripts/](scripts/) folder for easy testing of the JAX-WS service.
### Prerequisites
- Python 3.6 or higher
- pip (Python package installer)
### Setup
**Install Python dependencies:**
Windows:
```cmd
cd scripts
pip install -r requirements.txt
```
Linux/Mac:
```bash
cd scripts
pip3 install -r requirements.txt
```
### Available Test Scripts
#### 1. Simple Test Script
Quick automated test with a single name:
```bash
# Test with default name "World"
python scripts/simple_test.py
# Test with custom name
python scripts/simple_test.py "Your Name"
```
**Example Output:**
```
Checking service availability...
[OK] WSDL is accessible
Calling service with: 'Your Name'
Response: Hello World, Your Name!
[PASS] Test PASSED!
```
#### 2. Interactive Test Script
Full-featured test client with automated tests and interactive mode:
```bash
python scripts/test_hello_world.py
```
**Features:**
- Checks WSDL availability
- Runs automated tests with predefined names
- Interactive mode for manual testing
- Pretty-prints SOAP requests and responses
**Example Session:**
```
============================================================
JAX-WS Hello World Service Test Client
============================================================
1. Checking WSDL availability...
WSDL is accessible
2. Testing Hello World Service...
Calling service with name: 'World'
Response: Hello World, World!
Calling service with name: 'Python Client'
Response: Hello World, Python Client!
3. Interactive Mode
--------------------------------------------------------
Enter a name (or 'quit' to exit): John
Response: Hello World, John!
Enter a name (or 'quit' to exit): quit
```
### Using the HelloWorldClient Class
You can also use the `HelloWorldClient` class in your own Python scripts:
```python
from scripts.test_hello_world import HelloWorldClient
# Create client
client = HelloWorldClient()
# Check service availability
is_available, message = client.check_wsdl()
print(message)
# Call the service
response = client.call_hello_world("Developer")
print(response) # Output: Hello World, Developer!
```
### Troubleshooting Python Tests
**Service Not Available:**
- Ensure Docker container is running: `docker ps | grep jaxws`
- Check service URL: `curl http://localhost:8080/jaxws-hello-world/hello?wsdl`
**Module Not Found:**
- Make sure you're in the project root directory
- Install dependencies: `pip install -r scripts/requirements.txt`
**Python Command Not Found:**
- Windows: Use `python` or `py`
- Linux/Mac: Use `python3`
--- ---
## Environment Setup ## Environment Setup