java里哪些东西依赖容器?如ejb依赖jboss,除了这个,还有哪些东西依赖容器?

java里哪些东西依赖容器?如ejb依赖jboss,除了这个,还有哪些东西依赖容器?

回答: java里哪些东西依赖容器?如ejb依赖jboss,除了这个,还有哪些东西依赖容器?

  1. 我直接 摘  JavaEE规范中的给你看吧

    建议去下载份  Java EE 6规范  看看


    2.3.1 Java EE服务器为应用程序组件提供支持

    Java EE服务器为符合标准的应用程序组件提供部署,管理和运行的支持。根据它们所以依赖的Java EE服务器,应用程序组件可以分成3类:

    部署,管理和运行在Java EE服务器上的组件。这类组件包括Web组件和EJB组件。请查看这些组件各自的规范。
    部署和管理在Java EE服务器上,但是被加载到客户机上运行的组件。这类组件包括诸如HTML页面和嵌入THML页面的Applet这样Web的资源。
    部署和管理没有完全定义在本规范中的组件。应用程序客户端就属于这种类型。本规范的未来版本可能会更完整地定义应用程序客户端的部署和管理。请查看EE.10, “应用程序客户端”中对应用程序客户端的描述。
    2.4 容器

    容器为Java EE应用程序组件提供了运行时支持。容器提供了一份从底层Java EE API到应用程序组件的联合视图。Java EE应用程序组件不能直接地与其它Java EE应用程序组件交互。它们通过容器的协议和方法来达成它们之间以及它们与平台服务之间的交互。在应用程序组件和Java EE服务之间插入一个容器,这允许该容器透明地为组件注入必须的服务,例如声明式事务管理,安全检查,资源池和状态管理。

    一个标准的Java EE产品会为每个应用程序组件类型提供一个容器: 应用程序客户端容器,Applet容器,Web组件容器, 企业Bean容器。

    2.4.1 容器的标准

    本规范要求容器提供一个由JavaTM平台标准版规范v6 (Java SE)定义的JavaTM兼容性运行时环境。Applet容器可以使用Java插件产品来提供这个环境,或者是使用本地环境。提供JDKTM 1.1 API的Applet容器超出了本规范的范围。

    容器工具必须识别部署应用程序组件的打包文件格式。

    容器由Java EE产品供应商提供。请查看2.11.1,“Java EE产品供应商”中对产品供应商角色的描述。

    本规范定义了一套标准服务,每个Java EE产品必须提供支持。后面会对这些标准服务进行描述。Java EE容器提供了访问这些服务的API,供应用程序组件使用。本规范也描述了用连接器扩展Java EE服务的标准方法,以结合其它的非Java EE应用程序系统,例如大型机系统和ERP系统。

    2.4.2 Java EE服务器

    Java EE容器是底层服务器的组成部分。Java EE产品供应商通常使用现有的事务处理框架结合Java SE技术来实现Java EE服务器端功能。Java EE客户端功能通常构建于Java SE技术。


Qt里系统类和自定义类怎么都没有包,正如JAVA里那样

  1. Q
    Qt里系统类和自定义类怎么都没有包,正如JAVA里那样
    不解一:
    发现导入所有类的时候,都只是在头文件里把类名include进来,例如:
    #include <QDialog>
    而JAVA里则是具体到某个包下的某个类了,例如:
    import java.util.Date;
    不解二:
    看到有的代码里这么写:
    #include <QtGui/QApplication>
    #include <QtGui/QMainWindow>
    这个是不是就是像JAVA里似的,把QtGui包里的QApplication,QMainWindow两个类导入进来了?(如果是这样的话,#include <QDialog>又如何解释呢?难道QDialog没有包?)
    不解三:
    感觉C++里类管理太混乱,不像JAVA里那样系统:所有自定义的类都在一个没有包的Sources目录下。
    比如我新建了一个类A,放在了Sources下;然后我又新建了一个类B,B中有对A的引用,------这时候,如果是在JAVA里,B不需要在类的头部将A导入(同包)。在C++里呢?是不是也要#inlude <A>一下?
  2. A
    Java和C++是两种不同风格的语言,有很多差异是正常的。#include和import并不是完全等价的东西,#include是源代码层次的,import更像是在object code层次的。

请问在java 里调用存储过程,显示数据,当传的参数为NULL时,查询所有数据,这个怎处理呢?

  1. Q
    请问在java 里调用存储过程,显示数据,当传的参数为NULL时,查询所有数据,这个怎处理呢?

    create procedure ProcInventory
    @GoodsCode nvarchar(50),
    @GoodName nvarchar(50),
    @BeginDate  nvarchar(50),
    @EndDate  nvarchar(50)
    as
    declare @sql varchar(4000)

    create table #test(ord varchar(30),GoodsCode nvarchar(20),GoodsName nvarchar(50),Amount nvarchar(50),UnitPrice nvarchar(50),
    SumMoney nvarchar(10),Brand nvarchar(50),Unit nvarchar(50))
    set @sql= 'insert into #Test(ord ,GoodsCode,GoodsName ,Amount ,UnitPrice ,
    SumMoney ,Brand ,Unit )
    select ROW_NUMBER() over(order by TbShGoods.GoodsCode) as ord,  TbShGoods.GoodsCode,i.GoodName,(i.Amount-isnull(0,o.Amount)) as Amount,i.UnitPrice
         ,(i.Sum-isnull(0,o.Sum)) as Sum ,Brand,Unit
          from tbshindetail i left join tbshoutdetail o on i.GoodsID=o.GoodsID
          inner join TbShin on i.InID=TbShin.InID
              inner join TbShGoods on i.GoodsID=TbShGoods.GoodsID
    where   i.GoodName='''[email protected]+''' and TbShin.EnterDate between  '''[email protected]+'''
      and '''[email protected] +''' and TbShGoods.GoodsCode='''[email protected]+''''
    print '11'

    exec(@sql)
    print @sql
  2. A
    未测试,大概思路是定义一个where变量
    然后依次检查参数变量,如果参数非null,则where 加上比较 表达式。

    每次检查一下是否需要加上and运算符。

    set @sql= 'insert into #Test(ord ,GoodsCode,GoodsName ,Amount ,UnitPrice , 
    SumMoney ,Brand ,Unit ) 
    select ROW_NUMBER() over(order by TbShGoods.GoodsCode) as ord,  TbShGoods.GoodsCode,i.GoodName,(i.Amount-isnull(0,o.Amount)) as Amount,i.UnitPrice 
         ,(i.Sum-isnull(0,o.Sum)) as Sum ,Brand,Unit 
          from tbshindetail i left join tbshoutdetail o on i.GoodsID=o.GoodsID 
          inner join TbShin on i.InID=TbShin.InID 
              inner join TbShGoods on i.GoodsID=TbShGoods.GoodsID '
    set @wheres = ''
    if @GoodName is not null then
      @where = @where +'''[email protected]+'''
    endif
    
    if @GoodName is not null then
      if @where != '' then
        @where = @where +' and '
      endif
      @where = @where +'''[email protected]+'''
    endif
    .....
    
    if @where != '' then
      @where = ' where '[email protected]
    endif
    
    exec(@[email protected])
    

在java里如何修改socket请求的信息头

  1. Q
    在java里如何修改socket请求的信息头,比如客户端ip,我想发给服务器一个假的求情,不求回执消息。
  2. A
    用jpcap,可以去google搜一下

A:nginx 单独一个容器的话,要不要把php装在nginx这个 容器里。。。

  1. Q
    A:nginx 单独一个容器的话,要不要把php装在nginx这个容器里。。。



    该问题来自CSDN Docker技术交流群(303806405),由版主xinshubiao整理。
  2. A
    B:nginx 要调用动态php 需要php-fpm
    要在一个容器里 

    如果nginx做代理就没关系了
    A:貌似不在一个容器也行
    C:动态可以看不用 使用tcp就是了
    B:那这个容器就是纯的nginx代理
    default里面 都写成proxy_pass
    C:ngx + php本来就是fastcgi
    ngx收到请求转发给php-cgi的
    本地和远程 就是通过proxy_pass的
    fastcgi_pass 
    proxy_pass 可以做负载均衡
    B:ngx+fpm 我用的时候 经常会down 所以ngx多用于代理了
    C:down 一般是因为进程不够 
    B:进程 释放 慢  后来 我就crontab里面5分钟 reload nginx
    C:.......释放慢是php写的有问题吧...
    能撑多少并发和单次请求时间有直接关联的
    A:先把mysql独立一个容器



    该解答来自CSDN Docker技术交流群(303806405),由版主xinshubiao整理,由于手工编辑,提问者和回答者的QQ号和昵称没有一一注明,只简单用ABCD代替提问或回复, A代表提问者。 在此,先对群里参加讨论的同学表示感谢。

JAVA里怎么样在调用方法时同时改变实参的值?

  1. Q
    JAVA里在调用方法时,变量都是值传递的,形参改变不影响实参的值,但现在需求是需要改变实参的值。
    我查了下,JAVA好像没有引用传递,难道只能通过建个类再传递对象成员变量的方法?
    感觉这样太麻烦了。
  2. A

    这样做不符合面向对象编程,你可以通过方法返回值,如果你非要这么做,就只能按你说的那样,或者使用集合类


    我自己主修的一门编程语言里是可以的,能自己设置哪些参数是输入的,哪些是输出的。
    函数返回值只能返回一个值,作用有限。

    函数返回值只有一个不是问题,可以用集合,数组,tuple作为返回值,想返回多少就多少。
    直接改变调用参数在很多语言里是不被鼓励的,这样做一定有他的好处。
    java里面没有对改变传入参数进行限制,看了很多代码,使用最多的就是向方法中传入一个集合,在方法中向集合中添加元素,而这样多也多是因为有递归调用。
    综上,不建议直接修改传入参数。

java 里有没有字模提取的包

  1. Q
    java 里有没有字模提取的包
    比如输入“原”,对应的16进制
    "原",
    00H,10H--------1
    FCH,3FH-------2
    84H,00H--------3
    84H,00H--------4
    44H,10H--------5
    F4H,3FH--------6
    14H,10H--------7
    F4H,1FH--------8
    14H,10H--------9
    F4H,1FH--------10
    04H,01H---------11
    24H,09H---------12
    22H,11H---------13
    12H,21H---------14
    49H,21H---------15
    80H,00H----------16
  2. A
    http://www.pudn.com/downloads13/sourcecode/java/detail52512.html
    汉字字模点阵数据

DWR 如何实现在JAVA里调用javascript 里的方法?

  1. Q
    DWR 如何实现在JAVA里调用javascript 里的方法?


    在java 里去调用这个方法。

    function a(){
      alert("This a()!");
    }
  2. A
    web.xml 中配置DWR
    	<servlet>
    		<servlet-name>dwr-invoker</servlet-name>
    		<servlet-class>
    			org.directwebremoting.spring.DwrSpringServlet
    		</servlet-class>
    		<init-param>
    			<description>调试DWR,发布系统时应将其设为false</description>
    			<param-name>debug</param-name>
    			<param-value>true</param-value>
    		</init-param>
    		[color=red]<init-param>
    			<description>使用服务器推技术(反转AJAX)</description>
    			<param-name>activeReverseAjaxEnabled</param-name>
    			<param-value>true</param-value>
    		</init-param>[/color]
    		<init-param>
    			<param-name>
    				initApplicationScopeCreatorsAtStartup
    			</param-name>
    			<param-value>true</param-value>
    		</init-param>
    		<init-param>
    			<param-name>maxWaitAfterWrite</param-name>
    			<param-value>-1</param-value>
    		</init-param>
    		<load-on-startup>3</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>dwr-invoker</servlet-name>
    		<url-pattern>/dwr/*</url-pattern>
    	</servlet-mapping>



    在页面中
    //激活反射ajax
    dwr.engine.setActiveReverseAjax(true);

    在这种情况下才可以在代码里call页面的javascript

    下面是DWR 3.0RC 中操作的相关代码
    Browser.withCurrentPage(new Runnable() {
    			public void run() {
    				ScriptSessions.addFunctionCall("onlineUser", onlineUsers); // 参数一是页面的javascript函数,参数二是函数的参数
    			}
    		});



    页面里的onlineUser:
    /**
    			更新在线用户列表
    		*/
    		function onlineUser(onlineUsers){
    			if(onlineUsers){
    				$("#onlineUser").empty();
    				$(onlineUsers).each(function(i, user){
    					$("#onlineUser").append("<tr><td ondblclick=\"openMessageDialog();\">"+ user.userName +"</td></tr>");
    				});
    			}
    		}

Java使用正则表达式提取数据,JAVA里怎么写我不会,我在C#里会

  1. Q
    我在C#写了一个 提取方法,
    /// <summary>
            /// 处理meta部分的有用数据
            /// </summary>
            /// <param name="temp">要处理的数据</param>
            /// <returns>处理好的</returns>
            private string ExtractResponse(string temp)
            {
    
                string regexStr = "CONTENT =\"(?<key>.*?)\">";
                Regex r = new Regex(regexStr, RegexOptions. None);
                Match mc = r. Match(temp);
                return mc. Groups["key"]. Value;
    
            }


    关键是在java里这句怎么写


    private String ExtractResponse(String temp){
      string regexStr = "CONTENT =\"(?<key>.*?)\">";
    
      Pattern p = Pattern.compile(strExg,Pattern.CASE_INSENSITIVE);
      Matcher match = p.matcher(temp);
      if(match.find())
      {
          for(int i=0;i<match.groupCount();i++)
          {
                    
          }
      }
    }


    java里  string regexStr = "CONTENT =\"(?<key>.*?)\">";
    怎么写可以完成C#里那样写一样的功能
    问题补充:
    不求会或是不知道的人不要回复,不要骗分好吧
    问题补充:
    高手看我写个一个列子,基本算是满足我的需求了,但是还差点
     // 原始字符串
            String strTemp = "/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;qq/;/";
    
            // 正则表达式 用来区配提取aa= ; bb= ;
            String strExg = "/ssiwh/vieen/;aa=(.*);bb=(.*);qq/;/";
            Pattern p = Pattern.compile(strExg, Pattern.CASE_INSENSITIVE);
            Matcher match = p.matcher(strTemp);
            if (match.find())
            {
                for (int i = 0; i < match.groupCount(); i++)
                {
                    System.out.println(match.group(i));
    
                }
    
            }
    
    
    


    输出结果为:
    /ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;qq/;/
    87211_diweuj
    


    这样的输出结果不太多头,我要它提取第一个获取点aa= ;之间的。第二个获取点
    bb= ;之间的。它现在是打印了全部,完后打印了第一个获取点,第二个获取点没提取,我要提取
    87211_diweuj
    wqqeii_998

    这两个怎么改一个呢
    问题补充:

    <span style="color: red"><span style="font-size: xx-large">高手再次看</span></span>
    <pre name="code" class="java">
    // 原始字符串
            String strTemp = "/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;cc=aaaa;qq/;/";

            // 正则表达式 用来区配提取aa= ; bb= ;
            String strExg = "/ssiwh/vieen/;aa=(.*);bb=(.*);cc=aaaa;qq/;/";
            Pattern p = Pattern.compile(strExg, Pattern.CASE_INSENSITIVE);
            Matcher match = p.matcher(strTemp);
            if (match.find())
            {
                for (int i = 0; i &lt; match.groupCount(); i++)
                {
                    System.out.println(match.group(i));

                }

            }


    </pre>

    输出结果为:
    <pre name="code" class="java">
    /ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;cc=aaaa;qq/;/
    87211_diweuj
    </pre>

    这样的输出结果不太多头,我要它提取第一个获取点aa= ;之间的。第二个获取点
    bb= ;之间的。它现在是打印了全部,完后打印了第一个获取点,第二个获取点没提取,我要提取
    87211_diweuj
    wqqeii_998

    [size=small]不要提取cc= ;之间的[/size]

    这两个怎么改一个呢
  2. A
    String src1 = "/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;qq/;/"; 
    String re1  = "(?<=([aa|bb]=))[^;]+(?=;)";
    Pattern p = Pattern.compile(re1);
    Matcher m = p.matcher(src1);
           
    while(m.find()){   
        String tmp = m.group();
        System.out.println("结果:"+tmp);
    }

    再锻炼一下;hhe

关于java里打开隐藏文件的问题

  1. Q
    为什么java里 可以用file.delete来删除一个隐藏文件,但是new FileOutputStream(file) 和 new FileInputStream(file) 来open 一个隐藏文件 就不行 呢 就会报FileNotFoundExecption 这是为什么呢?大家能告诉我吗!
    问题补充:
    不好意思,我的问题有点问题,对于一个隐藏文件,new FileInputStream(file) 是没有问题的,但是在windows平台下,new FileOutPutStream(file) 就会有问题,我后来跟进java代码,发在是在FileOutPutStream的 open()方法那里出的错!!
    问题补充:
    你可以自己在windows平台下 随便对一个隐藏文件 进行 new FileOutPutStream(File)就可以知道错误了
  2. A
    抱歉,是我对IO不太熟悉,FileOutputStream的确会在初始化时就尝试打开文件,调用的都是本地方法。
    如果对一个已经存在的隐藏文件,虽然可以用input stream读出来,但是使用
    new FileOutputStream(file)
    尝试创建output stream就会报错
    Exception in thread "main" java.io.FileNotFoundException: .\src\hidden.txt (拒绝访问。)
    	at java.io.FileOutputStream.open(Native Method)
    	at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    	at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
    	at TestFile.main(TestFile.java:19)
    

    好象是权限的问题,但是输出文件的file.canWrite()是true
    不过如果用
    new FileOutputStream(file, true)
    就可以在文件后面添加内容,而且不报错,因为第二个参数指定了只是在末尾添加内容,调用的是openAppend方法,不是报错中的open方法,但是这样无法修改已经存在的内容

    可以使用RandomAccessFile来读写隐藏文件