1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstarts.wsat.simple;
18
19 import com.arjuna.mw.wst11.TransactionManager;
20 import com.arjuna.mw.wst11.TransactionManagerFactory;
21 import com.arjuna.mw.wst11.UserTransactionFactory;
22
23 import org.jboss.as.quickstarts.wsat.simple.jaxws.RestaurantServiceAT;
24
25 import javax.jws.HandlerChain;
26 import javax.jws.WebMethod;
27 import javax.jws.WebService;
28 import javax.jws.soap.SOAPBinding;
29 import javax.servlet.annotation.WebServlet;
30 import java.util.UUID;
31
32
33
34
35
36
37
38 @WebService(serviceName = "RestaurantServiceATService", portName = "RestaurantServiceAT", name = "RestaurantServiceAT", targetNamespace = "http://www.jboss.org/jboss-jdf/jboss-as-quickstart/wsat/simple/Restaurant")
39 @HandlerChain(file = "/context-handlers.xml", name = "Context Handlers")
40 @SOAPBinding(style = SOAPBinding.Style.RPC)
41 @WebServlet("/RestaurantServiceAT")
42 public class RestaurantServiceATImpl implements RestaurantServiceAT {
43
44 private MockRestaurantManager mockRestaurantManager = MockRestaurantManager.getSingletonInstance();
45
46
47
48
49 @WebMethod
50 public void makeBooking() throws RestaurantException {
51
52 System.out.println("[SERVICE] Restaurant service invoked to make a booking");
53 String transactionId;
54 try {
55
56 transactionId = UserTransactionFactory.userTransaction().toString();
57
58
59 RestaurantParticipant restaurantParticipant = new RestaurantParticipant(transactionId);
60 TransactionManager transactionManager = TransactionManagerFactory.transactionManager();
61 System.out.println("[SERVICE] Enlisting a Durable2PC participant into the AT");
62 transactionManager.enlistForDurableTwoPhase(restaurantParticipant, "restaurantServiceAT:" + UUID.randomUUID());
63 } catch (Exception e) {
64 throw new RestaurantException("Error when enlisting participant", e);
65 }
66
67
68 System.out.println("[SERVICE] Invoking the back-end business logic");
69 mockRestaurantManager.makeBooking(transactionId);
70 }
71
72
73
74
75
76
77 @Override
78 public int getBookingCount() {
79 return mockRestaurantManager.getBookingCount();
80 }
81
82
83
84
85
86
87
88 @Override
89 public void reset() {
90 mockRestaurantManager.reset();
91 }
92 }