|
|
WebOTX Manual V12.1 (第3版) 目次を表示 |






Caution
指定したプロジェクトにウィザードで作成したWebサービスが既に存在している場合、Webサービスを生成することができません。
Caution
プロジェクトには動的WebプロジェクトとEJBプロジェクト
のみを指定できます。
Memo
プロジェクト名に含めてはいけない文字を含めると、エラーメッセージが表示されます。
Memo
<WebOTX_DIR>はWebOTXのインストールルートディレクトリのことです。

Memo
Webアプリケーションを選択した場合、動的Webプロジェクトを生成します。EJBを選択した場合、EJB
プロジェクトを生成します。

Caution
WSDLファイル中で別のファイルをインポートした場合、インポートされるファイルを<ワークスペース>\<プロジェクト>/src/main/webapp/WEB-INF/wsdl/フォルダに手動でコピーする必要があります。コピー先は、wsdl
フォルダをルートにしての相対パス上にコピーします。
例えば、
--------wsdl ファイル--------
…
<types>
<xsd:schema>
<xsd:import
namespace=http://packagename/
schemaLocation="ext/TestServiceService_schema1.xsd"/>
</xsd:schema>
</types>
…
--------wsdl ファイル--------
「TestServiceService_schema1.xsd」ファイルをwsdl/ext
フォルダ配下にコピーします。
Memo
ファイルをインポートできるタグは以下の通りです:
wsdl:import
xsd:import
xsd:include
Memo
コピー後、WSDLファイルの解析エラーが解消されない場合は、WSDLファイルの右クリックメニュー
検証 を選択してください。
Memo
ロジックを作成する際に、アノテーションエディタを使用するとアノテーションの入力が簡単に行えます。アノテーションエディタについては、
[ 開発環境の構築(WebOTX Developer)
> アノテーション定義支援ツール ]
を参照して下さい。
Memo
<WebOTX_DIR>はWebOTXのインストールディレクトリに読み替えてください。
| ディレクトリ | ファイル |
|---|---|
| src/main/java/sample/ | Hello.java |
| src/main/webapp/WEB-INF/ | nec-jaxws.xml web.xml |
package sample;
import jakarta.jws.WebService;
@WebService(targetNamespace ="http://sample", serviceName = "Hello")
public class Hello {
public String sayHello(String name) {
return "Hello " + name + "!";
}
}
2. 配備するクラスの作成src> javac -processor com.nec.webotx.webservice.tools.ws.processor.modeler.annotation.WebServiceAp -d ../src/main/webapp/WEB-INF/classes -cp %CLASSPATH% -s main/java main/java/sample/Hello.java
Memo
<WebOTX_DIR>はWebOTXのインストールディレクトリに読み替えてください。
| ディレクトリ | ファイル |
|---|---|
| src/main/java/sample/jaxws | SayHello.java SayHelloResponse.java |
| src/main/webapp/WEB-INF/classes/sample/ | Hello.class |
| src/main/webapp/WEB-INF/classes/sample/jaxws | SayHello.class SayHelloResponse.class |
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://www.nec.com/WebOTX/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
name="Hello"
implementation="sample.Hello"
url-pattern="/hello"/>
</endpoints>
| <endpoint>の属性 | 説明 |
|---|---|
| name | Webサービスエンドポイントの識別子を指定します。 |
| implementation | Webサービスエンドポイントの実装クラス名を指定します。 |
| url-pattern | WebサービスエンドポイントへアクセスするためのURLを指定します。 |
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
id="WebApp_ID" version="6.0">
<display-name>Hello Service Endpoint</display-name>
<listener>
<listener-class>com.nec.webotx.webservice.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<display-name>HelloServlet</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.nec.webotx.webservice.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
最後に、サーバアプリケーションと各種設定ファイルをWARファイルにアーカイブします。WARファイルに含めるファイルは次のように配置します。| ディレクトリ | ファイル |
|---|---|
| src/main/webapp/WEB-INF/ | nec-jaxws.xml, web.xml |
| src/main/webapp/WEB-INF/classes/ | サーバアプリケーションのクラスファイル |
src/main/webapp/> jar cvf ../hellows.war WEB-INF
| ディレクトリ | ファイル |
|---|---|
| src/main/java/sample/ | HelloImpl.java |
| src/main/webapp/WEB-INF/ | nec-jaxws.xml web.xml |
| src/main/webapp/WEB-INF/wsdl/ | hello.wsdl |
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://sample" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://sample" name="Hello">
<types>
<xs:schema version="1.0"
targetNamespace="http://sample" xmlns:tns="http://sample" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="sayHello" type="tns:sayHello"/>
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
<xs:complexType name="sayHello">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name="sayHello">
<part name="parameters" element="tns:sayHello"/>
</message>
<message name="sayHelloResponse">
<part name="parameters" element="tns:sayHelloResponse"/>
</message>
<portType name="Hello">
<operation name="sayHello">
<input message="tns:sayHello"/>
<output message="tns:sayHelloResponse"/>
</operation>
</portType>
<binding name="HelloPortBinding" type="tns:Hello">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="sayHello">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="Hello">
<port name="HelloPort" binding="tns:HelloPortBinding">
<soap:address xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://localhost:80/hellows/hello"/>
</port>
</service>
</definitions>
Caution
WSDLファイルの次のホスト名およびポート番号を環境に合わせて変更してください。
location="http://localhost:80/hellows/hello"
また、クライアントアプリケーションを作成する場合は、「WSDLファイルから作成したクライアントについて」を参照してください。
src> wsimport -d ../src/main/webapp/WEB-INF/classes -s main/java -keep ../src/main/webapp/WEB-INF/wsdl/hello.wsdlwsimportコマンドの詳細に関しては、本ガイドの [ コマンドリファレンス > wsimport ] を参照してください。これにより、次のファイルが生成されます
| ディレクトリ | ファイル |
|---|---|
| src/main/java/sample/ | Hello.java Hello_Service.java ObjectFactory.java package-info.java SayHello.java SayHelloResponse.java |
| src/main/webapp/WEB-INF/classes/sample/ | Hello.class Hello_Service.class ObjectFactory.class package-info.class SayHello.class SayHelloResponse.class |
package sample;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebResult;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlSeeAlso;
import jakarta.xml.ws.RequestWrapper;
import jakarta.xml.ws.ResponseWrapper;
@WebService(name = "Hello",targetNamespace ="http://sample")
@XmlSeeAlso({
ObjectFactory.class
})
public interface Hello {
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName =
"sayHello", targetNamespace ="http://sample", className = "sample.SayHello")
@ResponseWrapper(localName =
"sayHelloResponse", targetNamespace= "http://sample",
className ="sample.SayHelloResponse")
public String sayHello(
@WebParam(name = "arg0", targetNamespace = "")
String arg0);
}
3. サービスエンドポイントインタフェースの実装
package sample;
import jakarta.jws.WebService;
@WebService(endpointInterface = "sample.Hello")
public class HelloImpl {
public String sayHello(String name) {
return "Hello " + name + " !";
}
}
実装クラスではWebServiceアノテーションを記述し、endpointInterfaceにはwsimportコマンドで自動生成されたサービスエンドポイントインタフェースのクラス名をフルパッケージで指定してください。src> javac -d ../src/main/webapp/WEB-INF/classes main/java/sample/HelloImpl.javaWebサーバに配備するためのwarを作成します。エンドポイントの定義ファイルnec-jaxws.xmlは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://www.nec.com/WebOTX/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
name="Hello"
interface="sample.Hello"
implementation="sample.HelloImpl"
wsdl="WEB-INF/wsdl/hello.wsdl"
service="{http://sample}Hello"
port="{http://sample}HelloPort"
url-pattern="/hello"/>
</endpoints>
| <endpoint>の属性 | 説明 |
|---|---|
| name | Webサービスエンドポイントの識別子を指定します。 |
| interface | 自動生成されたサービスエンドポイントインタフェースを指定します。 |
| implementation | Webサービスエンドポイントの実装クラス名を指定します。 |
| wsdl | wsimportで指定したWSDLファイルを指定します。 |
| service | WSDLファイルのservice要素のname属性に記述した、エンドポイントのサービス名を指定します。 |
| port | WSDLファイルのport要素のname属性に記述した、エンドポイントのポート名を指定します。 |
| url-pattern | WebサービスエンドポイントへアクセスするためのURLを指定します。 |
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:web="https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0">
<display-name>Hello Service Endpoint</display-name>
<listener>
<listener-class>com.nec.webotx.webservice.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<display-name>HelloServlet</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.nec.webotx.webservice.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
最後に、サーバアプリケーションと各種設定ファイルをWARファイルにアーカイブします。WARファイルに含めるファイルは次のように配置します。| ディレクトリ | ファイル |
|---|---|
| src/main/webapp/WEB-INF/ | nec-jaxws.xml, web.xml |
| src/main/webapp/WEB-INF/wsdl/ | hello.wsdl |
| src/main/webapp/WEB-INF/classes/ | サーバアプリケーションのクラスファイル |
src/main/webapp> jar cvf ../hellows.war WEB-INF