Oracle 这个类是线程安全的:com.orionserver.http.OrionHttpJspPage

Oracle 这个类是线程安全的:com.orionserver.http.OrionHttpJspPage,oracle,jsp,servlets,concurrency,oc4j,Oracle,Jsp,Servlets,Concurrency,Oc4j,我们使用JDeveloper10.1.3.4来开发web应用程序。我们将应用程序部署在linux上运行的OC4J上。我们将java代码直接放在jsp页面中。在jsp页面中,我们有通用java代码,例如 <% String invoice_id = ""; %> 具体地说,我不确定在这样的jsp中定义的实例变量在多个请求进入调用页面时是否是线程安全的?还是有什么办法来测试它?(我知道把java代码放在jsp中是个坏主意。但这是我老板的项目,不是我的。)谢谢 Jsp代码: <%

我们使用JDeveloper10.1.3.4来开发web应用程序。我们将应用程序部署在linux上运行的OC4J上。我们将java代码直接放在jsp页面中。在jsp页面中,我们有通用java代码,例如

<% String invoice_id = ""; %> 
具体地说,我不确定在这样的jsp中定义的实例变量在多个请求进入调用页面时是否是线程安全的?还是有什么办法来测试它?(我知道把java代码放在jsp中是个坏主意。但这是我老板的项目,不是我的。)谢谢

Jsp代码:

<%@ include file="mainHeader.jsp"%>
<%
  String inv_id = "";
%>

<jbo:ApplicationModule id="AM_Payment" definition="test.AM_Payment" releasemode="Stateless" />
<jbo:DataSource id="dsinv" appid="AM_Payment" viewobject="InvoiceView1"/>

<%

  SimpleDateFormat dtformat = new SimpleDateFormat("yyyy-MM-dd");
  SimpleDateFormat tmformat = new SimpleDateFormat("HH:mm:ss");
  String invoicedateStr = dtformat.format(new java.util.Date());
  oracle.jbo.domain.Date invoicedate = new oracle.jbo.domain.Date(invoicedateStr);
  String invoicetime = tmformat.format(new java.util.Date());

  inv_id = invoicedateStr+invoicetime;



发票id:

这里,变量invoice_id是jsp中的一个实例变量

不,不是。它是JSP服务方法的局部变量

这个jsp paymentApproved.jsp是线程安全的吗

如果没有看到这个JSP的一个字符,我们怎么知道呢

将Java代码放入JSP是一个非常糟糕的想法。Scriptlet多年来都不应该被使用。将JSP用作纯视图组件,其唯一作用是由Java编写的控制器从te请求中存储的bean生成HTML标记

<%@ include file="mainHeader.jsp"%>
<%
  String inv_id = "";
%>

<jbo:ApplicationModule id="AM_Payment" definition="test.AM_Payment" releasemode="Stateless" />
<jbo:DataSource id="dsinv" appid="AM_Payment" viewobject="InvoiceView1"/>

<%

  SimpleDateFormat dtformat = new SimpleDateFormat("yyyy-MM-dd");
  SimpleDateFormat tmformat = new SimpleDateFormat("HH:mm:ss");
  String invoicedateStr = dtformat.format(new java.util.Date());
  oracle.jbo.domain.Date invoicedate = new oracle.jbo.domain.Date(invoicedateStr);
  String invoicetime = tmformat.format(new java.util.Date());

  inv_id = invoicedateStr+invoicetime;
<BR><BR>
<table>
  <tr><td>Invoice id:&nbsp;&nbsp; <%=inv_id%></td></tr>
</table>
<hr>
<% 

    long startTime = System.nanoTime();
    int[] dummy = new int[10];
      for (int i=0; i<999999999; i++) {
        for (int j=0; j<10; j++) {
          dummy[j] = i;
        }
      } 
    long endTime = System.nanoTime();
    long duration = endTime - startTime;
    double seconds = (double)Math.round( (duration/1000000000.0d) *100.0d)/100.0d;    
    String sec = Double.toString(seconds);    
%>
<table>
<tr><td>Invoice id:&nbsp;&nbsp; <%=inv_id%></td></tr>
<tr><td>&nbsp;&nbsp;</td></tr>

<tr><td>Process time:&nbsp;&nbsp; <%=sec%>&nbsp;&nbsp;seconds</td></tr>

</table>
<hr>

<jbo:ReleasePageResources releasemode="Stateless"/>
</body>
</html> 
<% String invoice_id = ""; %>