> For the complete documentation index, see [llms.txt](https://docs.gapvelocity.ai/webmap/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.gapvelocity.ai/webmap/powerbuilder-to-java/post-conversion/architecture.md).

# Architecture

Up next, the basic PB2Java environment architecture will be explained divided by the following topics:

* WebMapRequests
* WebMapResponse
* Interceptors
* Helpers
* Transaction Manager
* Serializers

The image below shows the PB2Java diagram architecture.

## WebMapRequests <a href="#webmaprequests" id="webmaprequests"></a>

The **WebMapSingleController** is the entry point that processes all the requests following the single controller request mapping.

Every call to the **WebMapSingleController** must have this `{control}/{event}/{uid:.+}` format. For example:

```
http://localhost:8080/cb_next/bnclicked/cb_next%23com.demo.productcatalog.tailwindproductcatalog.w_productitems
```

The start method gets the corresponding control to find the method to execute (getMethodToExecute), and the parameters for the method (getJsonParametersFromRequest), by using the [reflection](https://docs.oracle.com/javase/tutorial/reflect/index.html) process.

```
@WebMAPController
	@RequestMapping(value = "/{control}/{event}/{uid:.+}", method = {RequestMethod.POST}, produces = MediaType.APPLICATION_JSON_VALUE)
	public @ResponseBody IWebMapResponse start(
			@PathVariable String control,
			@PathVariable String event,
			@PathVariable String uid, String requestBody) {

		List
```
