因为要生成报表.
我这边会用quartz定时启动一个Java Class.
通过这个JAVA类去调用一个Servlet.因为AP SERVER有三台..所以我要制定只有一台去run我生成report的code..
所以必须要调用一个Servlet,因为需要request获取IP判断是哪台AP SERVER在request..
不知如何普通的java类中启动一个Servlet. 或者Struts的Action也可以..
如何新建一个HttpServletRequest对象呢?
[b]问题补充:[/b]
因为要生成报表.
我这边会用quartz定时启动一个Java Class.
通过这个JAVA类去调用一个Servlet.因为AP SERVER有三台..所以我要制定只有一台去run我生成report的code..
所以必须要调用一个Servlet,因为需要request获取IP判断是哪台AP SERVER在request..
不知如何普通的java类中启动一个Servlet. 或者Struts的Action也可以..
如何新建一个HttpServletRequest对象呢?
我使过
URL url = new URL("XXX"); URLConnection Urlconn = url.openConnection(); InputStream inResult = Urlconn.getInputStream();
这样去做.
奇怪的问题出现了.
在本机测试都是OK的..
在正式机刚开始用整包上线是没问题的(war).
后来不知道过了多久发现那个Servlet唤醒不起来了.奇怪.
意思就是说servlet的代码就没执行
期间有多次Replace Class的上线模式..没有整包发过..
个人怀疑是因为这样搞挂了servlet.
不知道这是为何?
app server : WAS5.1
不可能每次都停机上整包的. 每次都要申请,而且停机的话客户也不能使用.
楼主你思路有问题,你一个java普通类,都没有web环境,何来的request对象?再说你都不在同一服务器下,就算你传个request有什么意义?这里的request一定要是web容器下获得的request才有意义。
实现你要的功能,你只需要发起一个http请求即可,如果用js,那么AJAX会很方便,如果你执意要用java,那么可以google:httpclient java。这个工具类能让你得到你想要的。
这样不行,一定要用servlet容器才能跑起来的
楼主如果你看完我写的你没明白的话就说明你基础有问题了。
你仔细看看API,HttpServletRequest是可以自己创建的么?他给你提供了构造方法了么?
API这样写道:public abstract interface HttpServletRequest
extends ServletRequest
你准备怎么样?integerface你也能自己new出来?HttpServletRequest怎么产生的?那是web容器动态赋值的,不是硬梆梆可以new的,servlet不是一般的java类,岂能随便乱调?要不为什么说struts1难以测试,要是你这个思路行得通,那struts1不就可以测试了?那干嘛还有struts2跑出来整个和servlet-api分离?
希望你别钻牛角尖。
不是很清楚,不过貌似可以通过java客户端调用Servlet。因为,说白了,浏览器调用Servlet无非就是通过http协议,而java中通过URL就可以指定连接协议,并获得HttpURLConnection对象,同服务器建立连接,进行交互。不过,估计lz得调整一下返回结果,不能是通常的页面了,而是有含义的可解析的字符串。
你写的问题补充也太乱了吧
建议 还是用 HttpClient远程访问 servlet容器方式启动吧。