When a web service application is deployed into WebSphere
Application Server, an instance is created for each application or
module. The instance contains deployment information for the web module
or Enterprise JavaBeans (EJB) module, including implementation scope,
client bindings and deployment descriptor information. There are three
levels of scope that can be set: application, session and request.
Before you begin
If you have not deployed the enterprise archive (EAR) file
yet, you need to have it ready or already deployed to the application
server.
About this task
The primary purpose of this task is to enable the configuration
of the web service port scope. The scope originally specified when
the JavaBeans object is enabled as a web service during the development
process can be changed with the
WebServicesServerBindPort command.
The scope attribute does not apply to web services that use Java Message
Service (JMS) transport or to enterprise beans.
Web Services for
Java 2 platform Enterprise Edition (J2EE) specifies that web services
implementations must be stateless. Therefore, to maintain specification
compliance, the scope can remain at the application level because
the state relevant to the individual sessions level or the requests
level is not supposed to be maintained in the implementation. If you
want to deviate from the specification and want to access a different
JavaBeans instance, because you are looking for information that is
located in another JavaBeans, the scope settings need to change.
The
setting that you configure for the scope determines how frequently
a new instance of a service implementation class is created for the
web service ports in a module. The application scope causes the same
instance of the implementation to be used for all requests on the
application. The session scope causes the same instance to be used
for all requests in each session. The request scope causes a new instance
to be used for every request. For example, with the scope set to application,
every message that comes to the server accesses the same Java bean
instance.
To change the scope setting through the wsadmin tool:
Procedure
- Launch a scripting command. To learn more, see
the starting the wsadmin scripting client information.
- Configure the scope of the web service port.
如果要使用現有的接聽器埠,而不使用或建立新的啟動規格,請判斷 EJB JAR 版本是否早於 2.1 版。
當您指定 -usedefaultbindings 選項來部署應用程式時,系統會自動建立及使用啟動規格。
如果啟動規格存在,系統會忽略接聽器埠,改用啟動規格。
如果要利用已定義的接聽器埠來部署 EJB JAR 2.1 版或以上的應用程式,而不用新的啟動規格,請將相關設定檔的
properties 目錄之下 wsadmin.properties 檔中的
com.ibm.websphere.management.application.dfltbndng.mdb.preferexisting 系統內容設為 true。
Use
the install, installInteractive, edit, or editInteractive options
to configure the scope of the web service port, as the following syntax
demonstrates:
$AdminApp install app_name {-usedefaultbindings -deployejb
-WebServicesServerBindPort {{<module_name> <Web_service> <port><scope_setting>}...}
The
previous example indicates that the scope of multiple ports can be
changed using one WebServicesServerBindPort command, where: - app_name is the application name, for example WebServicesSample.ear
- module_name is the module name, for example AddressBookW2JE.jar
- Web_service is the name of the web service, for example AddressBookW2JE
service/WSLoggerService2
- port is the name of the port, for example AddressBook
- scope_setting is the level of setting for scope, for example Session
Results
The scope for a web service port is configured.
Example
The following example of the presents the application, module,
web service, port and scope as it is written in the command line:
$AdminApp install WebServicesSamples.ear {-usedefaultbindings -deployejb -deployws
-WebServicesServerBindPort {{AddressBookJ2WB.war AddressBookService AddressBook request}
{AddressBookW2JB.war AddressBookService AddressBook application}}}
What to do next
Now you can finish any other configurations, start or restart
the application, and verify expected behavior of the web service.