JSF开发中的几个问题笔记。。
- jar包冲突
服务器是JBoss4.2.2GA,部署的时候报错,看意思似乎是JAR包冲突,估计JBOSS自带了JSF的jar包,
于是把应用程序lib目录下的jar包删掉,这次成功了。
百度说该版本的default确实自带了,位置在deploy/jboss-web.deployer/jsf-libs下,可以直接删除或修改deploy/jboss-web.deployer/conf/web.xml文件来去除JBoss的自带JSF,详细在:http://blog.csdn.net/luofengjava/archive/2007/09/10/1779798.aspx。
- javax.servlet.ServletException: viewId:xxx - View xxx could not be restored.
据说是session超时。。。这提示真不友好
继续学习……
JBoss 4.2.2GA:setProperty must be overridden by all subclasses of SOAPMessage
百度了下,原因是JBoss4不支持JDK 6,因为JDK6自带了SOAP,如果用5.0的即可,可我米有5.0……
http://community.jboss.org/wiki/JBossWithJDK6 这里提供了一个patch,我是解压版的 不会用 - _ -
在http://www.jguru.com/forums/view.jsp?EID=1364629看到有说删除jboss-saaj.jar即可,但是似乎米有效果……
难道真的要装个5.0的JDK?百度之,得解(http://blog.csdn.net/evan_endian/archive/2008/10/31/3196273.aspx):
把${JBOSS_HOME}/lib/中除了getopt.jar, jboss-system.jar, jboss-jmx.jar其他所有的jar拷贝进${JBOSS_HOME}/lib/endorsed,同时拷贝${JBOSS_HOME}/client/目录中的jboss-saaj.jar ,jboss-jaxrpc.jar到${JBOSS_HOME}/lib/endorsed目录下,这样服务器将使用jboss自带的老版本,经验证有效。
测试类跑成功了 满心欢喜^^
在Axis上部署WebService
上文提到了在Axis中用JWS即时编译、部署jws文件为WebService,虽然很简便但是十分不灵活,它不支持class,不支持jar,甚至不支持带包的文件,因此主要使用wsdd文件来定制部署。下面是一个例子:
这是课本上的一个例子的wsdd文件,
-
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
-
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
-
<service name="SearchOrder" provider="java:RPC">
-
<parameter name="className" value="org.yoyo.service.SearchOrder" />
-
<parameter name="allowedMethods" value="*" />
-
</service>
-
<beanMapping qname="mySearch:Order" xmlns:mySearch="urn:BeanService" languageSpecificType="java:org.yoyo.bean.Order" />
-
<beanMapping qname="mySearch:Customer" xmlns:mySearch="urn:BeanService" languageSpecificType="java:org.yoyo.bean.Customer" />
-
</deployment>
执行时通过控制台运行命令java org.apache.axis.client.AdminClient deploy.wsdd 来部署服务,成功后打开http://localhost:8080/axis/servlet/AxisServlet会看到部署的服务。
参数意思写得很明显了,在此不再细表。
在Tomcat中部署Axis搭建SOAP环境
几个下载地址:
- Axis:http://www.apache.org/dyn/closer.cgi/ws/axis/1_4
- XML解析器xerces-j:http://archive.apache.org/dist/xml/xerces-j/
- JavaMail API:http://java.sun.com/products/javamail/downloads/index.html
- JavaBeans Activation Framework (JAF):http://java.sun.com/javase/technologies/desktop/javabeans/jaf/downloads/index.html
搭建步骤:
- 将Axis的压缩包解压后webapps目录下的axis目录拷贝到Tomcat的webapps目录下,
- 将xerces-j解压后得到的jar包放入Tomcat/webapps/axis/WEB-INF/lib目录下,
- 如果要支持JWS(临时发布,由Axis自动编译部署,即下文中用到的),要将jdk的tools.jar也拷贝进该目录。
- 同时配置环境变量,CLASSPATH中加上该目录下的所有jar包。
- 将JavaMail和JAF解压后的jar包拷到JDK的lib目录下和tomcat的lib目录下。
- 启动Tomcat,此时应可以看到axis的目录并能正常访问。
- 下面编写一个WebService程式HelloWorld.jws,并将之放入axis的目录下(会被axis自动编译部署):
- 编写测试程式,在eclipse中创建一个项目,导入axis的lib目录下的所有jar包,新建TestClient类,代码如下:
-
import java.net.MalformedURLException;
-
import java.net.URL;
-
import java.rmi.RemoteException;
-
-
import javax.xml.rpc.ServiceException;
-
-
import org.apache.axis.client.Call;
-
import org.apache.axis.client.Service;
-
-
public class TestClient {
-
-
String url = "http://localhost:8080/axis/HelloWorld.jws";
-
Service service = new Service();
-
Call call = (Call) service.createCall();
-
call.setOperationName("sayHelloWorld");
-
}
-
-
try {
-
new TestClient().doTest("YOYO");
-
e.printStackTrace();
-
e.printStackTrace();
-
} catch (ServiceException e) {
-
e.printStackTrace();
-
}
-
}
-
-
}
-
- 运行该程式,若能得到正确的运行结果("YOYO, Hello World!")即说明成功搭建了一个SOAP环境。
Oracle客户端远程连接配置。。
首先打开Net Configuration Assistant,命名方法配置里选上:ORACLE NAMES、本地、主机名。
接着在本地NET服务名配置中添加,填入目标的host名、服务名与端口号,默认将采用scott/tiger进行连接。
(host名可以通过在控制台里tnsping主机IP获得)
测试成功后运行SQL*Plus,主机字符串填入配置在本地NET里的服务名,即可进行连接。
Windows+Eclipse+MinGW+Qt
(嵌入式考试的最后一题编程题居然是Qt GUI。。。囧。。)
几个下载地址:
- Eclipse for cpp developer:http://www.eclipse.org/downloads/ 里面找个for Cpp的
- Qt MinGW+SDK for Windows:http://qt.nokia.com/downloads/sdk-windows-cpp
- Qt Eclipse Integration:http://qt.nokia.com/developer/eclipse-integration
(其实直接装Qt Creator更好用的说 囧。。)
JS响应回车事件。。
话说前次弄某销售界面,需要每次回车增加一个tr来录入新的数据,下面是响应回车的代码:
-
function document.onkeydown() //网页内按下回车触发
-
{
-
if(event.keyCode==13)
-
{
-
// 调用add(i-1)号按钮点击事件(这是jQuery,不是默认js)
-
$("#add" + eval(i - 1)).click();
-
return false;
-
}
-
}
真简单阿 = =
JBoss发布EJB用ANT
初次尝试ant。。果然方便 > <
-
<?xml version="1.0" encoding="UTF-8"?>
-
<!-- 项目名与路径 -->
-
<project name="HelloWorld" basedir=".">
-
-
<!-- 定义一堆引用 -->
-
-
<!-- basedir = 项目目录 -->
-
<property name="src.dir" value="${basedir}\src" />
-
-
<!-- 环境变量 -->
-
<property environment="env" />
-
-
<!-- 环境变量中的JBOSS_HOME -->
-
<property name="jboss.home" value="${env.JBOSS_HOME}" />
-
-
<!-- 默认配置在default -->
-
<property name="jboss.server.config" value="default" />
-
-
<!-- class文件存放位置 -->
-
<property name="build.dir" value="${basedir}\build" />
-
-
<!-- 定义路径 -->
-
<path id="build.classpath">
-
<fileset dir="${jboss.home}\client">
-
<include name="*.jar" />
-
</fileset>
-
<pathelement location="${build.dir}" />
-
</path>
-
-
<!-- 准备工作 -->
-
<target name="prepare">
-
<!-- 删除目录 -->
-
<delete dir="${build.dir}" />
-
-
<!-- 创建目录 -->
-
<mkdir dir="${build.dir}" />
-
</target>
-
-
<!-- 编译 -->
-
<target name="compile" depends="prepare" description="编译">
-
<!-- 编译源码到指定目录 -->
-
<javac srcdir="${src.dir}" destdir="${build.dir}">
-
<classpath refid="build.classpath" />
-
</javac>
-
</target>
-
-
<!-- 打包 -->
-
<target name="ejbjar" depends="compile" description="创建EJB发布包">
-
<!-- 定义打包内容 -->
-
<jar jarfile="${basedir}\${ant.project.name}.jar">
-
<fileset dir="${build.dir}">
-
<include name="**/*.class" />
-
</fileset>
-
</jar>
-
</target>
-
-
<!-- 发布 -->
-
<target name="deploy" depends="ejbjar" description="发布EJB">
-
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" />
-
</target>
-
-
<!-- 卸载EJB -->
-
<target name="undeploy" description="卸载EJB">
-
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar" />
-
</target>
-
-
</project>
注释都比较清楚了 = = 。。似乎可以通用部署的 哈哈