我正在编写一个HTTP代理,它是测试/验证系统的一部分.代理过滤来自客户端设备的所有请求,并将它们引导到各种受测试的系统.
代理实现为servlet,每个请求都转发到目标系统,它处理GET和POST.有时,目标系统的响应会被改变以适应各种测试条件,但这不是问题的一部分.
转发请求时,将复制所有标头,但实际HTTP传输的标头除外,例如Content-Length和Connection标头.
如果请求是HTTP POST,那么请求的实体主体也会被转发,这里有时它不起作用.
从servlet请求中读取实体主体的代码如下:
URL url = new URL(targetURL);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
String method = request.getMethod();
java.util.Enumeration headers = request.getHeaderNames();
while(headers.hasMoreElements()) {
String headerName = (String)headers.nextElement();
String headerValue = request.getHeader(headerName);
if (...) { // do various adaptive stuff based on header
}
conn.setRequestProperty(headerName, headerValue);
}
Run Code Online (Sandbox Code Playgroud)
//这里是失败的部分
char postBody[] = new char[1024];
int len;
if(method.equals("POST")) {
logger.debug("guiProxy, handle post, read request body");
conn.setDoOutput(true);
BufferedReader br = request.getReader();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
do {
logger.debug("Read request into …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的应用程序从Weblogic 8.1 SP 6升级到Weblogic 10.3.为此,我安装了Weblogic 10.3并创建了一个域.WLS 10.3从我的域名成功启动.我重新编译了Java 1.6中的代码,并成功部署了所有代码更改.
我已部署应用程序并尝试启动应用程序欢迎(登录)页面.
然后我看到以下错误:
Predefined Constants Object: com.abc.xyz272.businessclasses.PredefinedConstants@3d80183
DataSourceName='null'
sessionTimeOutLimit='36000'
00:39:31==>Servlet: getRemoteUser=null
00:39:31==>Servlet: getHeader=null
00:39:31==>count=0
<Oct 29, 2010 12:39:31 AM MDT> <Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@2e28f75 - appName: 'mbqccrpt', name: 'xyzControllerServlet', context-path: '/xyzControllerServlet', spec-version: 'null'] Servlet failed with Exception
java.lang.NullPointerException
at com.abc.xyz272.servlets.xyzControllerServlet.processRequest(Unknown Source)
at com.abc.xyz272.servlets.xyzControllerServlet.doPost(Unknown Source)
at com.abc.xyz272.servlets.xyzControllerServlet.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
Truncated. see log file for complete stacktrace
Run Code Online (Sandbox Code Playgroud)
我还有一个问题.在Weblogic 8.1上运行的应用程序也使用apache服务器来启动静态页面.要在weblogic 10.3中升级应用程序,我们是否需要apache服务器?
说我有以下代码:
class Class1(object):
def __init__(self):
self.my_attr = 1
self.my_other_attr = 2
class Class2(Class1):
def __init__(self):
super(Class1,self).__init__()
Run Code Online (Sandbox Code Playgroud)
为什么Class2不继承Class1的属性?
//first
if(num % 2 == 0 ) {
isEven = true;
}
//second
isEven = (num %2 == 0);
Run Code Online (Sandbox Code Playgroud)
什么是最好的事情,首先是一个代码味道的情况?
如果在负载均衡器和weblogic集群之间配置了两个Web服务器,那么两个Apache服务器是否会保持会话粘性?
例如,负载均衡器将第一个请求转发给第一个apache,然后将第一个apache转发给第一个WL托管实例.即使来自同一用户的第二个req由负载均衡器转发到第二个apache,第二个apache也能够将它转发到服务第一个请求的第一个WLManaged实例,而不是第二个不了解的第二个WLManaged实例.会话信息.
理想情况下,weblogic apache插件的行为应该是什么?问题是我不想在wl服务器集群上启用会话复制.
我得到以下异常和tomcat挂起,我的服务已关闭.
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.search_005fresult_jsp._jspService(search_005fresult_jsp.java:86)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:276)
at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:81)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:517)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
Sep 29, 2010 2:57:17 PM org.apache.catalina.core.ApplicationC
Run Code Online (Sandbox Code Playgroud) 我想将我的java Web应用程序与mysql数据库连接,但每当我运行该程序时,它都会抛出以下错误
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at ConnectionManager.getConnection(ConnectionManager.java:21)
at UserDAO.login(UserDAO.java:29)
at LoginServlet.doGet(LoginServlet.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud) 我正在使用ASM java字节码检测,我的目标是测量每次访问变量的时间.
**测量时间和记录**
**可变访问**
我正在寻找微秒的分辨率.它应该是准确的,因此足够"便宜"(意味着我不需要一个函数或一个需要10毫秒来获取时间的库).
我试过System.NanoTime()(太多,太昂贵)和Calendar(太松散),但我正在寻找一个更好的选择.
我正在寻找可以在本地托管的网页的自动化测试中使用的java测试.
这些是用于RESTful Web服务.
情况是我们在本地托管了一些网页或Web服务,我需要对此进行多次测试.