目录:
- 基于JDK6 jax-ws开发的webservice获取客户端IP地址
- Endpoint.publish() 轻量级HTTP服务发布
- 在web容器tomcat下发布
- 基于XFire开发的webservice获取客户端IP地址
- 基于Axis开发的webservice获取客户端IP地址
[一]、基于JDK6 jax-ws开发的webservice获取客户端IP地址
以:http://www.micmiu.com/soa/webservice/jax-ws-demo/ 中的 [三] 2 具体示例为基础:
1. 情况一:如果以 Endpoint.publish() 的方式发布:
服务端接口实现类:HelloServiceImpl.java 修改如下:
@H_502_76@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package
com
.
micmiu
jaxws
demo
impl
;
import
java
net
InetSocketAddress
;
javax
annotation
Resource
;
jws
WebMethod
;
WebParam
;
WebService
;
xml
ws
WebServiceContext
;
handler
MessageContext
;
HelloService
;
sun
httpserver
HttpExchange
;
internal
developer
JAXWSProperties
;
/**
* blog http://www.micmiu.com
*
* @author Michael
*/
@
WebService
(
)
public
class
HelloServiceImpl
implements
HelloService
{
Resource
private
WebServiceContext
wsContext
;
WebMethod
getClientInfo
;
return
"hi,"
+
userName
" welcom to www.micmiu.com"
;
}
void
{
try
{
MessageContext
mc
getMessageContext
;
HttpExchange
exchange
mc
get
HTTP_EXCHANGE
;
InetSocketAddress
isa
exchange
getRemoteAddress
;
(
"InetSocketAddress : "
isa
;
(
"Hostname : "
getAddress
getHostAddress
" address: "
getHostName
;
}
catch
(
Exception
e
{
}
}
}
|
客户端调用后,服务端运行日志:
从上面的日志信息中可看出:服务端完全可以获取到客户端的IP地址。
2. 情况二:如果以web容器的方式发布(jetty 或 tomcat为例):
服务端接口实现 HelloServiceImpl.java 修改成如下: