起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 303|回复: 12

【结贴】Hessian远程调用Servlet怎么获取客户端IP**

[复制链接]
发表于 2009-3-16 11:37:24 | 显示全部楼层 |阅读模式
如题,按照论坛的方法是可能调用,不会实现取IP的类,对java不熟,听说hesssian servlet不能获取客户端IP信息
回复

使用道具 举报

发表于 2009-3-16 11:57:21 | 显示全部楼层
能取,只要调用通了就能取,Hessian相当于是个ws,进去以后我们在自己的类执行时随时都可以调用线程安全全局类
   com.caucho.services.server.ServiceContext.getContextRequest();
      它会返回一个HttpRequest。
楼主自己试一下吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-17 12:53:06 | 显示全部楼层
com.caucho.services.server.ServiceContext 这个类没有getContextRequest() 方法
回复 支持 反对

使用道具 举报

发表于 2009-3-17 13:07:10 | 显示全部楼层
我确认有,你用代码提示,你看看你能看到什么方法。
你先检查一下看看有没有找到这个类,确认是没有类还是没有方法,
这个类在hessian的包里,我们系统里自带了一个,你得把这个包引入进来才能看到这个类。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-17 14:43:32 | 显示全部楼层
最初由 SMP 发布
[B]我确认有,你用代码提示,你看看你能看到什么方法。
你先检查一下看看有没有找到这个类,确认是没有类还是没有方法,
这个类在hessian的包里,我们系统里自带了一个,你?.

以下省略...... [/B]


类是有的,我的项目引用的hessian包为hessian-3.0.13.jar,就是点不出方法(查看包中类声明却有此方法public static)

未命名.jpg

40.93 KB, 下载次数: 133

回复 支持 反对

使用道具 举报

发表于 2009-3-17 15:15:26 | 显示全部楼层
我自己试了试,是可以点出来的。
回复 支持 反对

使用道具 举报

发表于 2009-3-17 15:22:33 | 显示全部楼层
哦,真不敢相邻自己的眼睛了,麻烦再做个切图看看像我下面这样,用winrar打开hessian的jar文件,然后把这个serviceContext.class拷到c目录下执行下面的命令看看结果是不是跟我的一样
我这个里面标明了,函数名儿,能看见我告诉您的那个,看您的有没有那个函数吧。

C:\>javap ServiceContext
Compiled from "ServiceContext.java"
public class com.caucho.services.server.ServiceContext extends java.lang.Object{

    public static void begin(javax.servlet.ServletRequest, java.lang.String, jav
a.lang.String)       throws javax.servlet.ServletException;
    public static com.caucho.services.server.ServiceContext getContext();
    public void addHeader(java.lang.String, java.lang.Object);
    public java.lang.Object getHeader(java.lang.String);
    public static java.lang.Object getContextHeader(java.lang.String);
    public static javax.servlet.ServletRequest getContextRequest();
    public static java.lang.String getContextServiceName();
    public static java.lang.String getContextObjectId();
    public static void end();
    public static javax.servlet.ServletRequest getRequest();
    public static java.lang.String getServiceName();
    public static java.lang.String getObjectId();
    static {};
}

如果这里面有但点不出来,那就是编译路径有问题了!
最后强制写完看编译能不能过,如果编译能过也就行了!
回复 支持 反对

使用道具 举报

发表于 2009-3-17 15:27:56 | 显示全部楼层

aaa.jpg

59.1 KB, 下载次数: 122

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-17 16:00:34 | 显示全部楼层
最初由 SMP 发布
[B]哦,真不敢相邻自己的眼睛了,麻烦再做个切图看看像我下面这样,用winrar打开hessian的jar文件,然后把这个serviceContext.class拷到c目录下执行下面的命令看看结果是不是?.

以下省略...... [/B]



我说了包中可以看到此函数名啊,我用myeclipse 5.5 GA就是点不出来

未命名.jpg

79.65 KB, 下载次数: 119

回复 支持 反对

使用道具 举报

发表于 2009-3-17 16:23:40 | 显示全部楼层
我的是MyEclipse 7 ,肯定可以的,我都试验过了。 楼主准备在哪里调用这个函数,这个运行位置可不好选。  楼主具体需求是什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 04:45 , Processed in 0.045291 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表