คำถาม
เรียน อาจารย์ กานดา,
ดิฉันเคยเข้า train เรื่อง web service กับอาจารย์เมื่อเดือนที่แล้ว ที่ software park ค่ะ ซึ่งหลังจากได้พัฒนา web service ให้กับองค์กร พบปัญหาที่จะขอคำแนะนำจากอาจารย
์ดังนี้ค่ะ
ดิฉันได้พัฒนา web service ด้วย netbean และใช้ Sun application server หลังจากที่ได้พัฒนาเสร็จ และได้ deploy ขึ้น server พบปัญหาเกี่ยวกับเอกสาร wsdl ที่ netbean ได้ autogen ให้ พบว่าค่าของ soap address location ระบุ host ไม่ถูกต้อง ไม่มีการระบุ domain ต่อท้ายชื่อ host ทำให้ client เรียกแล้วเกิด error ว่า unknown host ซึ่งค่าของ uri ที่ระบุ ไม่ได้ระบุด้วยชื่อ host แต่ระบุเป็น ip หลังจาก deploy พบว่าค่าเปลี่ยนไปเป็นชื่อเครื่องอัตฺโนมัติค่ะ
ตัวอย่างเช่น
uri =
http://100.22.111.111:8081/testws/testService?wsdlsoap:address location="
http://aaa:8081/testws/testService"
ซึ่งชื่อเครื่องคือ "aaa" แต่หาก client เครื่องอื่นจะรู้จักด้วย "
aaa.org" ไม่รู้จัก "aaa" ที่ไม่มี domain org ทำให้เกิด error unknown host เมื่อทำการเรียก web service
ไม่ทราบว่า
มีวิธีการแก้ไขอย่างไรให้ soap:address location ระบุเป็น ip ตาม uri ที่เรากำหนดค่ะ รบกวนขอคำแนะนำจากอาจารย์ด้วยค่ะ
คำตอบ
จะขอยกตัวอย่างว่า อย่างเช่น อ ต้องการเปลี่ยน address ให้เป็น IP 111.22.33.444 นะค่ะ
1. ไปที่ไดเรกทอรี {local glassfish instance}/domains/domain1/config
อย่างเช่น เครื่องของอาจารย์คือ ไดเรกทอรี C:\Sun\AppServer\domains\domain1\config
2. แก้ไขไฟล์ domains.xml โดยให้แก้ไขอิลิเมนต์ http-listener
จาก
<http-listener acceptor-threads="1" address="0.0.0.0" blocking-enabled="false" default-virtual-server="server" enabled="true" family="inet" id="http-listener-1" port="8080" security-enabled="false" server-name="" xpowered-by="true">
ให้เป็น
<http-listener acceptor-threads="1" address="0.0.0.0" blocking-enabled="false" default-virtual-server="server" enabled="true" family="inet" id="http-listener-1" port="8081"server-name="111.22.33.444" security-enabled="false" xpowered-by="true">
3. Restart Sun Application Server
4. Deploy Web service and view its WSDL
Now we have soap:address change to 111.22.33.444:8081 as we wish.