我有像这样的XML字符串
<resp><status>good</status><msg>hi</msg></resp>
Run Code Online (Sandbox Code Playgroud)
我听从了这个帮助
mycode的:
public static void main(String args[]) {
String xml = "<resp><status>good</status><msg>hi</msg></resp>";
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
InputSource source = new InputSource(new StringReader(xml));
String status = "";
String msg = "";
try {
status = (String) xpath.evaluate("/resp/status", source,XPathConstants.STRING);
msg = (String) xpath.evaluate("/resp/msg", source,XPathConstants.STRING);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("status=" + status);
System.out.println("Message=" + msg);
}
Run Code Online (Sandbox Code Playgroud)
我想得到msg节点值,但我得到了异常
java.io.IOException: Stream closed
at java.io.StringReader.ensureOpen(StringReader.java:39)
at java.io.StringReader.read(StringReader.java:73)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.arrangeCapacity(XMLEntityScanner.java:1619)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipString(XMLEntityScanner.java:1657)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:193)
at …Run Code Online (Sandbox Code Playgroud) 我正在使用apache http客户端来测试我的WS.我在球衣上写了一个WS.这个WS的URL是
http://localhost:8080/mobilestore/rest/sysgestockmobilews/getinventory?xml=dataString
Run Code Online (Sandbox Code Playgroud)
使用url调用此WS我已经编写了一个方法,如下所示
public static void getInventory(String input)
throws ClientProtocolException, IOException {
System.out.println(input);
String url = URL + "getinventory";
HttpClient client = new DefaultHttpClient();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("xml", input));
String paramString = URLEncodedUtils.format(nameValuePairs, "utf-8");
url += "?" + paramString;
System.out.println(url);
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
BufferedReader rd = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行程序并将url传递给此函数时,我在行中获得异常
HttpResponse response = client.execute(request);
Run Code Online (Sandbox Code Playgroud)
例外情况如下 …
假设我有一个名为Test的类,就像这样
public class Test {
private String testId;
private String description;
private String department;
public Test() {}
public Test(String id,String des,String dpt) {
this.testId = id;
this.department = dpt;
this.description = des;
}
public String getTestId() {
return testId;
}
public void setTestId(String testId) {
this.testId = testId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department …Run Code Online (Sandbox Code Playgroud) 我们都知道我们可以在字符串格式的类名帮助下创建一个对象.就像我有一个班级名称"测试".运用
Class.forName("Test").newInstance()
Run Code Online (Sandbox Code Playgroud)
我们可以创建该类的对象.
我的问题是,有没有办法使用类名创建对象的数组或数组列表?或者假设我们有一个类的对象,并且可以使用此对象创建该对象的数组或数组列表.
我在GAE中使用struts.我正在使用GAE 1.8和struts 2.3.15 jar文件.
在我的应用程序中,我面临着这个例外
java.security.AccessControlException: access denied ("java.io.FilePermission" "jar:file:\E:\eclipse\Shaun\Convergent\war\WEB-INF\lib\struts2-core-2.3.15.3.jar" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
at java.security.AccessController.checkPermission(AccessController.java:560)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:431)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.util.zip.ZipFile.<init>(ZipFile.java:205)
at java.util.zip.ZipFile.<init>(ZipFile.java:144)
at java.util.jar.JarFile.<init>(JarFile.java:152)
at java.util.jar.JarFile.<init>(JarFile.java:89)
at com.opensymphony.xwork2.util.fs.JarEntryRevision.needsReloading(JarEntryRevision.java:76)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.fileNeedsReloading(DefaultFileManager.java:66)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:394)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:169)
at com.opensymphony.xwork2.config.ConfigurationManager.needReloadContainerProviders(ConfigurationManager.java:215)
at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:179)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:73)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:968)
at org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:86)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.convergent.auth.AuthorizationFilter.doFilter(AuthorizationFilter.java:32)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.convergent.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:48)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的简单的xml字符串
<table>
<test_id>t59</test_id>
<dateprix>2013-06-06 21:51:42.252</dateprix>
<nomtest>NOMTEST</nomtest>
<prixtest>12.70</prixtest>
<webposted>N</webposted>
<posteddate>2013-06-06 21:51:42.252</posteddate>
</table>
Run Code Online (Sandbox Code Playgroud)
我有像这样的xml字符串的pojo类
@XmlRootElement(name="test")
public class Test {
@XmlElement
public String test_id;
@XmlElement
public Date dateprix;
@XmlElement
public String nomtest;
@XmlElement
public double prixtest;
@XmlElement
public char webposted;
@XmlElement
public Date posteddate;
}
Run Code Online (Sandbox Code Playgroud)
我使用jaxb for xml绑定到java对象.代码是
try {
Test t = new Test
JAXBContext jaxbContext = JAXBContext.newInstance(t.getClass());
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
t = (Test) jaxbUnmarshaller.unmarshal(new InputSource(new StringReader(xml))); // xml variable contain the xml string define above
} catch (JAXBException e) { …Run Code Online (Sandbox Code Playgroud) JAX-WS允许开发人员编写面向消息以及面向远程过程调用(面向RPC)的Web服务
我是JAX-WS的新手.我想知道面向消息和远程过程调用的Web服务之间有什么区别.
我正在使用Firebird。我知道在Firebird中我们无法将结果集光标移回。仅TYPE_FORWARD_ONLY在TYPE_SCROLL_INSENSITIVE不支持时支持。在我的应用程序中,我想像这样使用,将结果集光标移回第一行resultSet.previous()。我想知道是否可以通过任何方式将光标移回。
查看Firebird的以下文档:
JDBC 3.0规范定义了三种类型的结果集
- TYPE_FORWARD_ONLY:结果集不可滚动,光标只能向前移动。使用TRANSACTION_READ_COMMITTED隔离级别时,结果集将返回ResultSet.next()调用时满足搜索条件的所有行。在其他情况下,结果集将仅返回在事务开始时可见的行。
- TYPE_SCROLL_INSENSITIVE:结果集是可滚动的,光标可以前后移动,可以定位在指定的行上。只有满足查询执行条件的行才可见。
- TYPE_SCROLL_SENSITIVE:Firebird和Jaybird不支持。驱动程序允许应用程序请求这种类型的结果集,但是根据JDBC规范,该类型被“降级”为先前的类型,并且相应的警告被添加到连接对象。
由于Firebird中缺少对可滚动游标的支持,因此通过将完整的结果集提取到客户端来实现对它们的支持(TYPE_SCROLL_INSENSITIVE结果集类型)。滚动发生在客户端的内存中。当结果集很大时,这可能会对系统内存使用和性能产生不利影响。
我认为这只是一段代码会有所帮助:
while (res.next()) {
if (!id.equalsIgnoreCase(res.getString("NO_TRANSFERT"))) {
res.previous();
break;
}
xml = xml + "<" + tableName + ">\n";
for (int i = 1; i <= count; i++) {
String columnName = rsmd.getColumnName(i);
xml = xml + "<" + columnName + ">" + res.getString(i) + "</"
+ columnName + ">\n";
}
xml = xml + "</" + tableName + ">\n\n";
} …Run Code Online (Sandbox Code Playgroud) 我对微服务架构感到困惑。我无法理解如何在 spring 中实现微服务架构。在 spring 中,我们使用@RestControllerRest API。假设我们有两个如下所示的休息控制器
@RestController
@RequestMapping("/user")
public class UserService {
// this class will hanlder operations related to user
}
@RestController
@RequestMapping("/role")
public class RoleService {
// this class will hanlder operations related to role
}
Run Code Online (Sandbox Code Playgroud)
两个其余控制器都属于一个项目。可以说我们上面的结构是微服务吗?或者我们必须创建两个项目,一个是UserServiceProject,另一个是RoleServiceProject。在UserServiceProject我们为用户操作的rest API创建Rest Controller。在RoleServiceProject我们为角色操作的休息 API 创建了休息控制器。
正如微服务架构所说,每个服务都应该是可独立部署的。从这个定义我们可以说,如果我们有 2 个服务,我们需要创建两个项目,以便两个项目都可以独立部署。
另请注意,这两个服务共享相同的数据库,并且用户和角色之间也存在关系。
首先,我向您展示代码,然后问几个问题.我有这样的类数据库连接(请忽略语法错误,如果有的话)
class DatabaseConnection {
private static Connection connection = null;
private static String driverName="";
private static String userName="";
private static String passwrod="";
private static String url="";
private DatabaseConnection() { }
public static void createConnection() {
if ( connection == null ) {
// read database credentials from xml file and set values of driverName, userName, passowrd and url
//create connection with database and set store this connection in connection object created a class level.
}
}
public static void closeConnection1() …Run Code Online (Sandbox Code Playgroud) 我想知道如何将转换String到Date在Struts2.我有一个简单的表单,用户以此格式提供日期"yyyy-MM-dd".将Sturts2地图表格提交给bean.我在日期转换中遇到错误.我谷歌它很多,并声明我们必须使用自定义类型转换器.我不想为日期转换编写自定义类型转换器.我认为Struts2中应该有一个简单的机制来进行数据转换,因为数据转换是非常常见的功能.
JSP
<s:form action="AddDomain">
<s:push value="idp">
<s:textfield name="domainName" label="Domain Name" />
<s:textfield name="url" label="Domain URL" />
<s:textfield name="noOfLicense" label="License Purchased" />
<s:textfield name="licenseExpireDate" label="License Expire Date"
title="YYYY-MM-DD like 2013-01-21" />
<s:textfield name="userActiveDuration" label="Active User Duration"
title="please mention in days" />
<s:textarea name="notes" label="Note" cols="30" rows="5" ></s:textarea>
<s:submit value="Add" />
</s:push>
</s:form>
Run Code Online (Sandbox Code Playgroud)
这是用户输入输入的JSP.
模型类
@Entity
@Table(name = "Domain")
public class IdentityProvider implements Serializable {
@Id
@Basic(optional = false)
private String url;
private String domainName;
private …Run Code Online (Sandbox Code Playgroud) 我有这个代码
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestClass {
public static void main(String args[]) {
SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS");
Date d = new Date();
System.out.println(f.format(d));
}
}
Run Code Online (Sandbox Code Playgroud)
我预计输出应该是
OutPut: 2013-07-05 19:07:983 (current date time)
Run Code Online (Sandbox Code Playgroud)
但我得到的输出如下
Output: 2013-07-186 19:07:983
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?当我打印这一行时,d.toString()我得到了正确的日期.
我在stackoverflow上关注这个问题但是当n的值大于24时它没有给我正确的答案.请给我另一个解决方案并修改那个问题.
这是代码
Date d = new Date();
Date dateBefore = new Date(d.getTime() - (25 * 24 * 3600 * 1000) );
Run Code Online (Sandbox Code Playgroud)
当我检查datebefore值时,它显示我的日期是星期二,星期二,星期二,02:34:18 UTC 2013
现在,如果我将值25更改为24,我将得到正确的日期,即2013年10月8日星期二09:38:48 UTC