LabSolutions - JEE
-
Upload
prakashrao008 -
Category
Documents
-
view
222 -
download
0
Transcript of LabSolutions - JEE
-
7/30/2019 LabSolutions - JEE
1/21
1
WA1280 Architecting and Designing JEEApplications
Student Lab Solutions
Web Age Solutions Inc.
-
7/30/2019 LabSolutions - JEE
2/21
2
ContentsSOLUTION 1.FUNDAMENTAL ARCHITECTURAL CONCEPTS ............................................................................. 3
SOLUTION 2.SYSTEM ARCHITECTURE DEVELOPMENT GUIDELINES ............................................................... 5
SOLUTION 3.QUALITY OF SERVICE REQUIREMENTS ....................................................................................... 8
SOLUTION 4.JEETECHNOLOGY SERVERS .....................................................................................................10
SOLUTION 5.JEETECHNOLOGIES ..................................................................................................................12
SOLUTION 6.JEETECHNOLOGY CHOICES......................................................................................................14
SOLUTION 7.PROTOTYPES .............................................................................................................................17
SOLUTION 8.SOFTWARE ARCHITECTURE.......................................................................................................18
SOLUTION 9.DATA TRANSFER,TRANSACTIONS AND SECURITY IN DISTRIBUTED COMPUTING......................20
-
7/30/2019 LabSolutions - JEE
3/21
3
Solution 1. Fundamental Architectural Concepts
Part 1. Answers to General Questions
1. An architecture that is used to describe a particular application domain is called a
reference architecture.
2. The key differences between architecture and design are:
Architecture is a form of higher level design and deals with subsystems, layers,interfaces and components. Design deals with classes and methods.
Architecture deals with QoS (non-functional) requirements. Design tends to focusmore on functional requirements and is not as concerned with QoS requirements.
Architecture addresses common mechanisms such as logging, transaction handling,security, and data persistence. Design utilizes these common mechanisms.
Architecture addresses a few key, high-risk use cases that provide good coverageof the mechanisms and techniques that will be used in the system. Design
addresses all use cases.
3. There are several reasons why architecture is needed:
Architecture provides guidance to the development team designers
It provides a design plan to help manage the complexity of the system
It is a place to capture early design decisions, constraints on design andimplementation, and organizational structure for the development team
It makes the system more consistent and easier to design, develop and maintain
Training
Maintenance
Testing
Ensuring qualities of service (QoS)
Verification of requirements
Project management
System operation
4. The architect plays many roles:
Requirements
Technology risk assessment
Analysis of the problem domain
Overall design
-
7/30/2019 LabSolutions - JEE
4/21
4
Review and approval
Mentoring
Test support
Implementation
Team leadership
Conduit to project management
Part 2. Answers to SportyStuf Project Questions
1. Every students situation is different. The qualities you would want to demonstrateinclude:
Software design and development experience
Technical leadership
Team facilitation skills
Communication skills
Building consensus skills
Technical skills
Domain knowledge
Abstraction skills
-
7/30/2019 LabSolutions - JEE
5/21
5
Solution 2. System Architecture DevelopmentGuidelines
Part 1. Answers to General Questions
1. Malicious software is also known as malware. This includes viruses, worms, trojan
horses, malicious code downloaded from a remote site (applets, ActiveX, Javascript,remotely loaded RMI classes, etc). Distributed systems are more exposed to malware
since they often involve the internet and other untrusted networks. Nodes in distributed
systems are not always physically isolated from untrusted parties and therefore require
more security measures to keep them from being infected by malware.
2. There are dozens of examples. One example is an internet bank web site that allowscustomers to transfer funds, pay bills and view their statement online. Confidentiality is
important since customers would not necessarily want anyone to know how much money
they have in their bank account, what bills they pay, etc. Data for communications to orfrom this web site could be made confidential by using HTTPS (HTTP over SSL). SSL
provides secure, encrypted communications.
3. Obviously, there are many possibilities but one issue seems most likely. Rich clients
typically use RMI/IIOP to communicate with EJBs. Communications via IIOP are notgenerally allowed through firewalls, either outgoing or incoming. Firewalls usually
disallow the port that IIOP runs on unless it is port 80. They may also inspect traffic and
disallow messages using the IIOP protocol. Since company Y is hosting the application
server, they probably have configured their firewall properly to allow transmissions usingthis protocol and port. It is more likely that the firewall at company X is disallowing
outgoing IIOP traffic since it is an unknown protocol and/or port.4. This system is not highly available since a failure of any of these servers renders the
system unavailable. It could be made highly available by adding redundant web servers,EJB servers and database servers.
5. First, the servlet needs to make three separate remote method calls to the EJB over the
network. Network latency is three times as much as making one network call to get all
three values at once. Second, the entity bean accessor methods will start and complete atransaction for each method call, assuming a transaction was not first started by the
servlet. This introduces additional overhead.6. If you perform the two write operations inside a distributed transaction that both
resources (database and ERP system) are aware of, the failure will cause the wholedistributed transaction to rollback so either both operations succeed or both fail. Thedistributed transaction guarantees that the two operations are executed as one atomic
operation.
7. You should consider using standards-based architecture, technologies and tools. This
allows you to more easily switch from vendor to vendor. JEE is such a standard.
-
7/30/2019 LabSolutions - JEE
6/21
6
Part 2. Answers to SportyStuf Project Questions
1. Some of the risks that this system will be exposed to include:
Security
Difficulties keeping the security mechanisms properly integrated between theorder entry system, the shipping & inventory system and the CCX credit cardsystem.
Malware could make its way from the internet into the systems of SportyStuf.
Maintaining confidentiality of user transactions.
Proper authentication of users and the SportyStuf system.
Correct authorization of users.
Denial of service attacks against the SportyStuf system.
The possibility of users failing to sign off of the system and other peoplemaking transactions to cause them damage.
Performance
The system is dependent on the internet which could cause performanceissues.
Scalability
There is the potential for a larger number of users than initially predicted.
Compatibility
It is possible that some users lack browser support for the versions of HTMLand other scripting languages that are used by the web application.
Control
It is possible that users disable cookie support in their browsers.
There is also additional complexity and dependency on CCX to configure theirfirewalls correctly to allow transactions from SportyStuf through.
2. An applet based internet system is possible but the disadvantages outweigh theadvantages:
Advantages:A potentially richer user interface than an HTML based interface.The possibility of caching code and data on the client to improve
responsiveness.Could increase scalability by offloading some of the processing to the client.
Disadvantages:
-
7/30/2019 LabSolutions - JEE
7/21
7
It requires users to download and install an appropriate JRE (Java RuntimeEnvironment). This can take considerable time and would certainly frustrate
users. In some cases, users may not have the authority to install the JRE ontheir workstation. The application Dave worked on was an intranet
application so the local IT department had much more control over the user
workstations and could more easily install the appropriate JRE.
Traffic that uses the IIOP protocol may not be allowed out of the usersfirewall. If the server listens on a port other than 80, it is likely that the usersfirewall will block outgoing traffic regardless of whether IIOP is allowed or
not. Again, the HR application that Dave worked on did not have this issue
because the traffic did not pass through an external firewall or if it did, thelocal IT department had full control over the firewall.
3. Ideally, the creation of an order, the debiting of the customer s credit card and the
updating of the shipping & inventory system would be performed in a single transaction.
4. The advantages and disadvantages of using XWU-AS technology on this project are:
Advantages:
Pam understands the technology and she would be able to develop faster inXWU-AS than with JEE.
Disadvantages:
Dave and possibly other developers need to learn the new technology.
XWU-AS is a proprietary technology and one of the goals of the project is toavoid vendor lock-in. JEE technology facilitates this goal.
-
7/30/2019 LabSolutions - JEE
8/21
-
7/30/2019 LabSolutions - JEE
9/21
9
MaintainabilityApplication support is important to SportyStuf and properdocumentation must be made available
ManageabilityThe system should be easy to manage.
2. The following quality of service conflicts occur:
Scalability is reduced by security. For example, the use of SSL reduces scalability.
Manageability is made more difficult by the additional complexity required forsecurity, scalability, cultural adaptability, and portability. Manageability isprobably the best QoS to decrease in order to achieve all of the other QoS
requirements.
-
7/30/2019 LabSolutions - JEE
10/21
10
Solution 4. JEE Technology Servers
Part 1. Answers to General Questions
1. TimesheetBean and TimeSheetItemBean could be packaged in one EJB jar and
UserBean, UserPreferencesBean and UserApprovalBean could be packaged in anotherEJB jar. This strikes a balance between the two extremes of packaging them all in their
own jars (reusable but complex) and packaging them all in one jar (less reusable but very
simple). This is packaging by related functionality.
2. Deployment descriptors are a good place to put customization properties in the form ofenvironment variables. The EJB can be customized by the assembler or deployer at
deployment time by simply changing an environment variable that tells the bean which
algorithm to use. This allows customization without changing the beans code.
3. Containers provide components with standardized access to services of the JEE server
including transactions, security, resource pooling, and other components.
4. An ERP (enterprise resource planning) system is packaged software with modules thathelp a business manage important aspects of their business including orders, customer
service, inventories, etc.Organizations can choose to implement some or all of themodules. The modules have different versions that have been configured for differentindustries (health care, energy, financial, etc).Typically the business needs to changetheir business processes to match the software.
Part 2. Answers to SportyStuf Project Questions
1. The application server characteristics that are important to this system are illustrated in
bold:
Server 1 Server 2 Server 3
Clustering X X X
Hot deployment X X
Administration X X
Third party persistence providers X X
Sophisticated load balancing XIntegrated web and EJB tier X
Entity bean caching X
Instance pooling X
Security X X
Deferred database writes X
-
7/30/2019 LabSolutions - JEE
11/21
11
Support for distributed transactions X X
Totals: 3 6 4
Clustering, sophisticated load balancing, entity bean caching, instance pooling,and deferred database writes support the scalability requirement
Administration supports the manageability requirement
Security supports the security requirement
Support for distributed transactions is also required because there are multipleresources to manage (the database and the shipping & inventory system, for
example)
If we keep it simple and rank each characteristic with the same weight, server 2 is the
best choice for the new SportyStuf system.
-
7/30/2019 LabSolutions - JEE
12/21
12
Solution 5. JEE Technologies
Part 1. Answers to General Questions
1. The browser issues an HTTP request to the web server/container. The web container
encapsulates the details of the request in an instance of HttpServletRequest (including
request parameters, cookies, etc). The servlets service method is called by the web
container to process the request. The servlet processes the request and creates a response
using an HttpServletResponse object. Both the HttpServletRequest andHttpServletResponse are provided by the container to the servlet as parameters to the
service method. The response is then sent back to the browser by the web container.
2. JSPs could be used for the three views. A servlet could act as the controller for the
application. Each JSP would submit to the controller which stores the answers and then
forwards to the next JSP. The answers would be stored in the user specific HttpSession.
Once the third page submits to the controller, the ten answers stored in HttpSession andthe last five answers just submitted would be written to the database directly using JDBC
or indirectly using entity beans.
3. In container-managed persistence, the container is responsible for saving state of entitybeans to the database. The bean does not need to contain data access code.
In bean-managed persistence, the entity bean must contain hand-written data access code.
This allows more flexibility in how the data is saved to the database and allows the bean
to potentially use more powerful persistence frameworks.
4. There are three types of EJBs:
Session beans model business logic
Entity beans model business data
Message-driven beans enable asynchronous communication and are anasynchronous alternative to session beans
5. In order for a container to efficiently manage a large number of bean instances, it cantake an instance out of memory and store it in permanent storage. This is called
passivation. When this bean is invoked again, the container creates a new instance and
initializes it with the data saved during passivation. This is called activation. Therefore, ifthe session bean contains a conversational state that must be preserved between method
invocations, the session bean indicates STATEFUL management mode.
6. JCA uses an application level contract and several system level contracts. The JCAapplication level contract defines the API that an application component uses to access an
EIS. It exists between the application component and the adapter.
JCA system level contracts define the interface between an application server and aresource adapter. The system level contracts include contracts for management of
connections, transactions, security, lifecycle, work and message inflow.
-
7/30/2019 LabSolutions - JEE
13/21
13
Part 2. Answers to SportyStuf Project Questions
1. A servlet could be used as the controller for the web application. Forms would submit
to the servlet, the servlet would invoke business logic and then dispatch to an appropriateview (JSP).
2. JSPs could be used to render the views of the application (i.e. the web pages).
3. A filter could be used to perform the required logging of requests. This is a cross-
cutting concern that should apply to all web components so it is better to use a filter than
encode the logging logic in every web component.
4. EJB technology is appropriate for this system since it requires distributed transactions,
security, scalability, instance and resource pooling, and persistence. It also requires
support for a future rich client application that connects directly to the business tier via
RMI/IIOP. All three types of EJBs could be used in this system.
Entity beans model persistent data such as orders, customers and products.
Session beans model business logic.
A message-driven bean performs order processing including updating the shipping& inventory system, debiting the credit card system and emailing the customer, allin the background.
5. A JEE Connector Architecture (JCA) connector exists for the shipping & inventory
system and can be used to access that system. Specifically, we are very interested in the
support for distributed transactions that the connector provides, as well as connectionmanagement and integrated security.
-
7/30/2019 LabSolutions - JEE
14/21
14
Solution 6. JEE Technology Choices
Part 1. Answers to General Questions
1. If we were to manage state in the client tier, we would have to pass the session state
back and forth between the browser and the web container in the form of HTML formparameters or cookies. This has the serious disadvantage that it will perform poorly over
low bandwidth network connections. It would be more appropriate to manage client
session state in the web tier using HttpSession.
2. Rapid application development is facilitated by using entity beans and in particular,entity beans with CMP (container-managed persistence). Several tools exist that can
create entity beans automatically from a domain object model. Developers do not need to
write code to handle data persistence if CMP is used.
3. Mobile devices support both web-based and Java-based client applications.
Web-based mobile presentation includes WML (Wireless Markup Language),XHTML Basic, and CHTML (the older Compact HTML standard).
Java-based mobile applications are called midlets. Presentation in midlets ishandled using the MIDP user interface API. This includes both a high-level API
(simple but inflexible) and a low-level API (complex but provides more
flexibility).
4. In a model 1 architecture, browser requests are made directly to JSPs which then useJavaBean components to read and/or write data sources. The JSPs then use the data in
the bean to render the results. This is suitable for very simple applications.
In a model 2 architecture, browser requests are made to a controlling servlet which thenuses JavaBean components to read and/or write data sources. The servlet then dispatches
(forwards) to a JSP to display the results. The JSP uses the data stored in the JavaBean(s)created by the controller as content to be displayed on the page. This facilitates a cleaner
separation of presentation and content and makes it easier to maintain mid to large size
applications.
5. A JSP can include content of another resource (JSP, servlet, HTML page, etc) usingeither the include directive or the include tag. The include directive is resolved at
compile-time and thus is faster at run-time. The include tag is resolved at run-time and
thus allows for dynamic content.
6. A queue is the destination used in a point-to-point messaging domain and eachmessage is read by only one consumer. If process A sends a message to a queue, onlyone of processes B and C will get the message.
We could change the domain from point-to-point to publish/subscribe and use a topic
instead of a queue. We also need to register processes B and C as subscribers to the
topic. Now, if process A sends a message to the topic, both processes B and C will getthe message.
-
7/30/2019 LabSolutions - JEE
15/21
15
7. Here are some of the more important MOM features that support high availability and
reliability:
Guaranteed message delivery means that messages are stored in such a way as tosurvive system crashes and are guaranteed to be delivered to one consumer in a
PTP domain and to all consumers in a Pub/Sub domain. Without this guarantee,
messages could be lost during failures or unusual circumstances.
Store and forward is a feature where the producer detects that the MOM systemitself is down and stores messages locally until the MOM system is restored.
Message retry is when the MOM system has the ability to retry failed messages. Ifthe message fails a certain number of times, it is sent to a poison message queue.
8. With asynchronous messaging, performance can be increased considerably because a
client can send a message to a server and continue to do other work while the server
processes the message. The client can then receive a callback message from the server
with the results and process this response at its leisure.
However, the performance of send and wait calls is better in synchronous systems.This is when a client makes a call to a server and then waits for a result. This type of
request is slightly slower in an asynchronous situation due to the extra messaging layer
and message parsing overhead.
Part 2. Answers to SportyStuf Project Questions
1. Client session state is probably best handled by stateful session beans. This supportsthe scalability QoS requirement since the EJB container provides lifecycle managementfor stateful session beans, increasing scalability. Furthermore, the system may need to
support a rich client in the future. Stateful session beans support both web and rich
clients, whereas managing session state in HttpSession only supports web clients.This solution also requires the use of HttpSession for web clients since the web
application needs to remember which stateful session beans belong to which users.
That is, each user session in the web tier has an HttpSession that has a single reference to
the stateful session bean.
2. The MVC (model-view-controller) architectural pattern is appropriate for this system.In particular, the model 2 web architecture is the best choice. It could be implemented
using a servlet as the controller, JSPs as the views and EJBs as the model.
This pattern makes it easier for team members to focus on their specialties. For example,
web designers can focus on developing JSPs without having to worry about control or
model logic. This pattern makes the system easier to maintain by using several, smaller,specialized components rather than fewer, larger, more general components that mix
elements of model, view and control.
3. JMS (i.e. MOM) could be used to implement the order processing logic. It takes
considerable time to update the shipping & inventory system as well as to debit the credit
card system. Furthermore, the user does not need to wait around for the system toperform this processing since they will be sent an email with the results. Hence, when
-
7/30/2019 LabSolutions - JEE
16/21
16
the user creates an order, we could place a message on a queue to be processed later by
an order processor message-driven bean. When the order processor gets the message, itdebits the credit card, updates the shipping & inventory system and sends an email to the
customer with the results.
-
7/30/2019 LabSolutions - JEE
17/21
17
Solution 7. Prototypes
Part 1. Answers to General Questions
1. You could develop a conceptual prototype to elicit the requirements from the users.
The fact that they tend to communicate their needs after an application has been builtsuggests a more sophisticated prototype is required. For example, use an HTML mockup
rather than a few screen shots thrown up on a whiteboard.
2. A conceptual prototype is a good idea but you probably wouldnt need to spend a lot of
time making it work. A few screen shot mockups on a whiteboard would probablysuffice since the application already has a common look and feel that the users are used
to. They should be able to get a good understanding just from the whiteboard mockups.
3. An evolutionary prototype is one that will be built upon over several iterations and will
eventually become the working, production-quality system. Hence, the developer should
follow any established coding standards. If it were a throw-away prototype, the codingstandards would not be as important and in fact, could get in the way of the goals of the
throw-away prototype (i.e. building it quickly).
Part 2. Answers to SportyStuf Project Questions
1. A conceptual prototype is a very good idea since the users are not sure what the
screens should look like, other than they should be professional looking and consistent.An architectural prototype is also a good idea. This will help verify scalability, give the
development team some experience with JEE (Pam lacks Java experience), and improve
understanding of user tasks.
-
7/30/2019 LabSolutions - JEE
18/21
18
Solution 8. Software Architecture
Part 1. Answers to General Questions
1. The 4+1 architectural view model contains views that describe the architecture in
different ways. Each view has a different target set of stakeholders. Any one view doesnot try to document the entire architecture since that would be too complex. The five
views are:
Use-Case View
Contains the main use cases and scenarios that illustrate the main flows,significant behavior and risks
Logical View
Contains the architecturally significant aspects of the design model including
key subsystems, layers, and classes
Process View
Optional view that shows how operating system threads and processescommunicate with one another
Implementation View
Describes how the software is implemented including the components andfiles that are used to assemble and release the physical system
Deployment View
Encompasses the nodes that form the systems hardware topology and theallocation of processes and components to the nodes
2. A subsystem is a design-time collection of classes, interfaces and components thatmake up a development package. A component is a modular and easily replaceable run-
time implementation construct. Subsystems are design/build-time concepts whereas
components are run-time concepts.
3. Layers build on subsystems and provide additional organization. This leads toadditional advantages such as improved portability, the ability to build higher level layers
without the need to build lower levels that potentially change less frequently, and allows
architects and designers to rollup subsystems of the architecture into very simple, high-
level views that make it easier to communicate system wide concepts.
Higher level layers can depend on lower level layers but not vice versa. This keeps thearchitecture straightforward and helps to ensure that the rebuild of an upper layer does
not require the rebuild of a lower layer.
4. This design violates the acyclic dependencies principle. That is, no two elements can
be dependent on each other, either directly or indirectly. This violation makes it moredifficult to manage dependencies between the components.
-
7/30/2019 LabSolutions - JEE
19/21
19
Part 2. Answers to SportyStuf Project Questions
1. See LabSolutionDiagrams.ppt for the package diagram. The design uses formal
layering. That is, each layer is dependent only on the layer immediately below it (or onitself). The packages are organized as follows:
Presentation Layer
ViewContains all JSPs
ControllerContains ShoppingController, ShoppingLogger, SessionCloser
Business Process Layer
ShoppingContains ShoppingServiceEJB, ShoppingServiceRemote,ShoppingServiceHome, ShoppingCartItem
OrderContains OrderProcessorEJB
UtilitiesContains EmailUtil
Business Domain Layer
OrderContains OrderEJB, OrderLocal, OrderLocalHome, OrderItemEJB,OrderItemLocal, OrderItemLocalHome
CustomerContains CustomerEJB, CustomerLocal, CustomerLocalHome
ProductContains ProductEJB, ProductLocal, ProductLocalHome
2. See LabSolutionDiagrams.ppt for the component diagram. To keep the diagramsimple, we chose not to show interfaces. We do show the ports that the ShoppingService
and OrderProcessor communicate with (asynchronous messaging).
Note that the ProductSearch, MaintainCart and OrderConfirmation JSPs are dependent onthe ShoppingController since they require data for display. The ShoppingController gets
the data from the EJB tier, stores it in request attributes and forwards to the JSPs. TheJSPs then use the data in the request attributes for display.
3. See LabSolutionDiagrams.ppt for the deployment diagram.
-
7/30/2019 LabSolutions - JEE
20/21
20
Solution 9. Data Transfer, Transactions and Securityin Distributed Computing
Part 1. Answers to General Questions
1. The update to the relational database and the update to the ERP system need to be
performed in two separate local transactions. If a failure occurs in-between the twoupdate operations, a compensating transaction needs to be issued to the resource that was
updated first. The operations could be ordered such that the resource that is easiest to
undo using a compensating transaction is issued first.
2. Support for client-side transactions is not required by the JEE specification. The
company should try to keep their product as portable as possible so it will run in as manyof the different JEE servers used by their customers as possible. Hence, they should
avoid using client-side transactions in their product.
3. HTTP Basic authentication does not provide confidential data transfer natively. The
communication channel can be enhanced to use SSL (Secure Sockets Layer) or TLS(Transport Layer Security) so data is encrypted before it is transmitted over the wire.
This is HTTPS (HTTP over SSL).
4. Programmatic authorization allows the developer to add logic to the application to
handle authorization. Programmatic authorization allows maximum flexibility for thosecases that cannot be handled using declarative authorization rules in the deployment
descriptor.
Part 2. Answers to SportyStuf Project Questions
1. The update of the order entry relational database and the update of the shipping &
inventory system should be performed in a single distributed transaction. A transaction is
required to guarantee the atomicity of the update. That is, to treat the update to thedatabase and the update to the shipping & inventory system as one atomic unit that either
completes entirely or does not have any affect at all.
2. The update to the CCX credit card system cannot be performed as part of a distributed
transaction. The creation/update of orders and the update of the shipping & inventorysystem can be performed in a distributed transaction since there is a JCA connector for
the shipping & inventory system. Therefore, we will need to use a local transaction to
update the credit card system. If a failure of the overall group of operations fails, a
compensating transaction may be required to undo the debiting of the credit cardsystem.
3. With a web application we have at least four options to choose from: basic, form-
based, digest and mutual (client certificate). Mutual authentication would be too difficult
to manage and it would be infeasible to ask all potential customers of SportyStuf to buy aclient-side digital certificate just to transact with them online. Basic and digest
authentication do not necessarily present a consistent, professional login screen since it is
-
7/30/2019 LabSolutions - JEE
21/21
up to the browser to present this screen. One of the requirements is to present a
professional user interface. Form-based login allows the developers to implement theirown login page and does not require a client-side certificate so it is the most appropriate
choice.
4. Server authentication could be handled using SSL. With SSL, a server side certificate
is installed on the web server(s). The certificate must be signed by a CA (CertificateAuthority) that is well known and has public certificates in all popular browsers.
5. SSL provides message integrity since messages between the users browser and the
server (and vice versa) use digital fingerprint verification techniques.
6. SSL provides message confidentiality since messages between the users browser and
the server (and vice versa) are encrypted. Confidentiality is important because first timeusers provide their credit card number during user registration. It is also important to
keep the users user id and password confidential so attackers do not capture thisinformation and login and buy products on behalf of the user or even worse, change their
address so it comes to an address that the attacker can pick the product up at.